这可能是一个愚蠢的问题,但请暂时容忍我。我有类似的东西:
public class A{
public A(){
//Some statements here
B bObj = new B(); //Goes in infinite loop this above statement
(new Thread(bObj)).start();
//Some statements here
}
public static void main(String[] args){
A aObj = new A();
}
}
}
class B extends A implements Runnable{
public testprint(){
System.out.println("Inside testprint()");
}
}
如果我在超类中创建一个子类对象,它会进入无限循环,因为我猜一旦创建了子类对象,它就会不断调用超类构造函数,从而不断创建子类对象。如果我在 main 中声明子类对象,我会得到类似“无法从静态上下文引用非静态成员”的信息,因为我的超类对象尚未初始化。所以我无法在 main 中初始化我的子类对象。
那么解决这个问题的好方法是什么?