整個代碼:沒有可以訪問類型的封閉實例。
public class ThreadLocalTest {
ThreadLocal<Integer> globalint = new ThreadLocal<Integer>(){
@Override
protected Integer initialValue() {
return new Integer(0);
}
};
public class MyThread implements Runnable{
Integer myi;
ThreadLocalTest mytest;
public MyThread(Integer i, ThreadLocalTest test) {
myi = i;
mytest = test;
}
@Override
public void run() {
System.out.println("I am thread:" + myi);
Integer myint = mytest.globalint.get();
System.out.println(myint);
mytest.globalint.set(myi);
}
}
public static void main(String[] args){
ThreadLocalTest test = new ThreadLocalTest();
new Thread(new MyThread(new Integer(1), test)).start();
}
}
爲什麼下面的代碼片段:
ThreadLocalTest test=new ThreadLocalTest();
new Thread(new MyThread(new Integer(1),test)).start();
會導致以下錯誤:
No enclosing instance of type ThreadLocalTest is accessible. Must qualify the allocation with an enclosing instance of type ThreadLocalTest (e.g. x.new A() where x is an instance of ThreadLocalTest).
的核心問題是: 我想在靜態方法中初始化內部類。 這裏有兩種解決方案:
使內部類作爲外部類
使用外部基準,如:
new Thread(test.new MyRunnable(test)).start();//Use test object to create new
什麼錯誤?我看起來像你剛剛重新粘貼代碼作爲錯誤 – Bohemian