다음 예제 코드 (SSCCE)는 로컬 변수 이 최종해야한다고 불평합니다.내부 익명의 외부 변수에 액세스 Runnable
- 이 문제가 있습니다 :
내가 하나public class Foo { final List<A> list = new ArrayList() {{ add(new A()); }}; void foo() { A a; Thread t = new Thread(new Runnable() { public void run() { a = list.get(0); // not good ! } }); t.start(); t.join(0); System.out.println(a); } class A {} }
public class Foo { final List<A> list = new ArrayList() {{ add(new A()); }}; void foo() { // A a; final ObjectRef x = new ObjectRef(); Thread t = new Thread(new Runnable() { public void run() { // a = list.get(0); x.set(list.get(0)); } }); t.start(); t.join(0); // System.out.println(a); System.out.println(x.get()); } class A {} class ObjectRef<T> { T x; public ObjectRef() {} public ObjectRef(T x) { this.x = x; } public void set(T x) { this.x = x; } public T get() { return x; } } }
내 질문에 코드를 변경 작업 일을 만들려면?
- ObjectRef 클래스는 JSE의 표준 클래스로 존재합니까?
- 올바른 방법은 무엇입니까?
'ex.shutdown()'을 잊지 마세요. – Thilo