我可以在Java中声明一个实例变量并在静态初始化块中使用它吗?

时间:2017-04-04 13:37:33

标签: java

class E implements Runnable {  
static Thread t1;  
public static void main(String args[]) {  
// some code  
}  
static {t1 = new Thread();}  
}  

静态初始化块在首次加载类时执行。这个静态init块如何知道t1是一个已经声明的实例变量?

1 个答案:

答案 0 :(得分:0)

答案是否,你不能在静态上下文中处理实例变量,

奖励:)

我不确定你为什么需要那个, 因为main()是一种输入方法,所以你不应该在那里实现你的逻辑,

相反,创建E的实例并在E中调用一个方法来执行您的逻辑,不要将所有变量声明为static只是为了能够使用它们来自main()

示例:

public class E implements Runnable {  
    private Thread t1;

    public E(){
        t1 = new Thread();
    }

    public void doMyWork(){
        t1....
    }

    public static void main(String args[]) {  
        E e = new E();
        e.doMyWork();
    }  
}