嗨,有人可以向我解释一下为什么这个代码片段给我带来StackOverflowError的问题,如果您能解释instanceObj初始化并调用ObjectTest构造函数和java.lang.Object构造函数时发生的情况,我将非常感谢。在我看来,ObjectTest构造函数一遍又一遍地循环。但我不知道确切的原因吗?所以有什么建议…
public class ObjectTest {
public ObjectTest() {
}
ObjectTest instanceObj = new ObjectTest();
public static void main(String[] args) {
ObjectTest localObj = new ObjectTest();
}
}
让我们看看将执行什么:
main()
创建一个新的实例 ObjectTest
ObjectTest
类有一个字段instanceObj
,其将包含一个ObjectTest
instanceObj
用新的in初始化ObjectTest
我认为您想要更多类似这样的东西:
public class ObjectTest {
private static ObjectTest instanceObj;
private ObjectTest() {
}
public static ObjectTest getInstance() {
if (instanceObj != null) {
instanceObj = new ObjectTest();
}
return instanceObj;
}
public static void main(String[] args) {
ObjectTest localObj = ObjectTest.getInstance();
}
}
或这个 :
public class ObjectTest {
private static final ObjectTest instanceObj = new ObjectTest();
private ObjectTest() {
}
public static ObjectTest getInstance() {
return instanceObj;
}
public static void main(String[] args) {
ObjectTest localObj = ObjectTest.getInstance();
}
}
这是单例模式。
问题内容: 我一直试图创建一个包含两个值的类的数组,但是当我尝试将值应用于该数组时,我得到了。 为什么会出现此异常,我该如何解决? 问题答案: 你创建了数组,但未在其中放置任何内容,因此你有一个包含5个元素的数组,所有元素均为null。你可以添加 在设置的行之前。
本文向大家介绍使用BeanFactory实现创建对象,包括了使用BeanFactory实现创建对象的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了BeanFactory实现创建对象的具体代码,供大家参考,具体内容如下 说明: 其作用是减少层与层之间的依赖。 实现步骤: 编写2个类(Student,Teacher)再编写beans.properties文件,接着编写BeanFacto
本文向大家介绍Java String创建对象实例解析,包括了Java String创建对象实例解析的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Java String创建对象的问题,具体介绍如下。 首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,String只是一个引用变量。 所有的字符串都是String对象,由于字符串常量的大量使用,java中为了节省时间,在编
本文向大家介绍JavaScript中创建字典对象(dictionary)实例,包括了JavaScript中创建字典对象(dictionary)实例的使用技巧和注意事项,需要的朋友参考一下 对于JavaScript来说,其自身的Array对象仅仅是个数组,无法提供通过关键字来获取保存的数据,jQuery源码中提供了一种非常好的方式来解决这个问题,先看一下源码: 上述源码是创建一个编译结果的缓存,代码
问题内容: 当我创建一个说类Employee的模拟对象时。它不调用Employee对象的构造函数。我知道Mockito在内部使用CGLIb和反射,创建了一个代理类,将该类扩展为模拟。如果未调用employee的构造函数,那么如何创建employee类的模拟实例? 问题答案: Mockito使用CGLib生成类对象。但是,要实例化此类对象,它使用Objenesis http://objenesis.
在C++11中,你可以有多种语法选择用以对象的初始化,这样的语法显得混乱不堪并让人无所适从,(),=,{}均可以用来进行初始化: int x(0); //使用()进行初始化 int y = 0; //使用=进行初始化 int z{0}; //使用{}进行初始化 在很多情况下,可以同时使用=和{} int z = {0}; //使用{}和=进行初始化 对于这一条,我通常的