로컬 내부 클래스를 정의 할 때 클래스 만 참조하는 포함 메서드의 로컬 변수에 액세스하는 것이 안전합니까? 그래서 같이 : 내 예에서로컬 내부 클래스 메서드 포함 로컬 변수에 안전하게 액세스
public Bar containingMethod()
{
Foo foo = new Foo();
Bar bar = new Bar()
{
public void baz()
{
System.out.println("Accessing foo: " + foo.getValue());
}
};
return bar;
};
나는 정의되는 클래스가 foo
에 대한 참조가 있는지 모르겠어요 위. 문제는 안전하고 OK 일 경우입니까 아니면 bar.baz()
을 호출하기 전에 foo
가 가비지 수집 될 위험이 있습니까?
안전하지 않을뿐만 아니라 합법적이지 않습니다. 둘 모두를 '최종'으로 설정하면 안전하고 합법적입니다. – EJP