首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

绕过java构造函数创建类实例,可行否解决办法

2012-01-05 
绕过java构造函数创建类实例,可行否背景描述:要测试下面MyClass类中的func函数,但是MyClass没有默认构造函

绕过java构造函数创建类实例,可行否
背景描述:
要测试下面MyClass类中的func函数,但是MyClass没有默认构造函数:

Java code
public class MyClass{    private OtherClass obj;    public MyClass(OtherClass obj){ //OtherClass的构造比较麻烦,而其obj这个对下面func的测试没有帮助        this.obj = obj;        ....    }    public void func(){  //要测试的函数        ....    }}


由于上面的OtherClass的构造比较麻烦,而其obj这个对下面func的测试没有帮助,所以产生了绕过构造函数的想法;
具体已经有一种方法:通过反序列化的手段(具体比较复杂,有可能要涉及到对序列化文件进行修改的情况);这里想让大家出出主意,有没有更好的别的方法。


[解决办法]
反序列化?不懂什么意思,帮顶吧
[解决办法]
晕,每个类都有默认的构造函数,谁说MyClass没有?
[解决办法]
如果这个类暂时用不到obj这个实例的话,自己写一个与obj初始化无关的构造方法不就行了?
[解决办法]
探讨
晕,每个类都有默认的构造函数,谁说MyClass没有?

[解决办法]
不想构造OtherClass,很简单啊
new MyClass(null) 不就可以了

[解决办法]
我晕死。你不写构造函数不就行了。。。
[解决办法]
需要这么麻烦吗?
如果func用不到obj,你直接传个null不就行了,当然,前提是你的MyClass构造函数不发生null异常
不知道LZ是怎么测试的?junit?
[解决办法]
有方法吗,不清楚
关注中

[解决办法]
探讨
晕,每个类都有默认的构造函数,谁说MyClass没有?

[解决办法]
那就用 OtherClass 的子类做参数,前提OtherClass非final类
public SubOtherClass extends OtherClass{
public SubOtherClass(){} 

}
[解决办法]
你必须要让你的MyClass正确实例化。如果你的MyClass都没有正确实例化,你对它的测试还有什么意义呢?所以,你不要试图绕过构造函数,而是让它正确执行。11楼的兄弟已经给你指明了,NullObject处理这里问题非常合适。
[解决办法]
学习一下。。帮顶。。。。。转点分。。。
[解决办法]
当你写了在MyClass类里面构造了
public MyClass(OtherClass obj){ 
this.obj = obj;
....
}
这个构造函数的时候
如果你在别的地方用MyClass myClass = new MyClass();来实例化
则你必须在MyClass类里面加上public MyClass(){ }这构造函数

[解决办法]
不能这样做,应为Java语言本省就是依靠构造函数来产生实例的

这是标准.
[解决办法]
Java code
public class MyClass4Test{    public static void func(){  //要测试的函数        //....        //copy MyClass#func()    }}
[解决办法]
学习学习
[解决办法]
探讨
晕,每个类都有默认的构造函数,谁说MyClass没有?

热点排行