是什么使得在类本身内部创建类的实例成为可能?
public class My_Class
{
My_Class new_class= new My_Class();
}
Run Code Online (Sandbox Code Playgroud)
我知道这是可能的并且已经自己完成但是我仍然不能让自己相信这不是"谁是第一个 - 鸡还是鸡蛋?" 问题的类型.我很高兴收到一个答案,从编程角度以及从JVM /编译器的角度来澄清这一点.我认为理解这将有助于我清除OO编程的一些非常重要的瓶颈概念.
我收到了一些答案,但没有一个清楚我所期望的程度.
静态变量和实例变量之间有什么区别.以下句子是我无法得到的:
在某些情况下,类的所有对象只应共享特定变量的一个副本 - 这里使用静态变量.
静态变量表示类范围信息.类的所有对象共享相同的数据.
我认为实例变量是使用类宽,而静态变量只在自己的方法中有范围?
执行时,下面的代码会产生堆栈溢出错误.但是,如果删除其中之一
static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");它在没有堆栈溢出错误的情况下运行.如果我有上面的两行,怎么会出现堆栈溢出错误,但如果只有一行是在类中,则没有错误?
public class GenerateStackOverflow {
private final String value;
static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");
final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");
public GenerateStackOverflow(String value) {
System.out.println("GenerateStackOverflow.GenerateStackOverflow()");
this.value = value;
}
public String getValue() {
return value;
}
public static void main(String[] args) {
GenerateStackOverflow.class.getName();
}
}
Run Code Online (Sandbox Code Playgroud)