2017-01-08 2 views

답변

2

아래의 예제 코드에서 Example의 인스턴스에 연결할 수 없게되면 os이 참조하는 개체는 최종 화기에 도달 할 수 있습니다. Example 인스턴스가 (이 마무리 중 "부활"다음 이전에 확정되었다 예를 들면 때문에) 마무리에 더 이상 자격이 없었다 경우

public class Example { 

     private OutputStream os; 

     public Example(OutputStream os) { 
      this.os = 0s; 
     } 

     protected void finalize() { 
      try { 
       os.close(); 
      } catch (IOException ex) { 
       // ignore it 
      } 
    } 
    } 

그러나, 다음 os는 종결 자 - 도달 할 수 없다.

은 "파이널-도달"상태가 가 너무 빨리 삭제되지 않습니다 마무리 중에 언급 수 있다는 것을 객체 지정에 대한 입니다. 이 규격은 이것이 어떻게 보장되어야하는지에 대해서는 언급하지 않았다. Java 코드 (또는 원시 코드)가 특정 오브젝트가이 상태인지 여부를 판별하는 것이 불가능할 것이라고 나는 상상한다.

0

개체 Foo가 있습니다. Foo는 finalizable이며 더 이상 프로그램의 변수에 대한 참조가 없습니다. Foo에는 회원 Bar가 있습니다. 막대는 다른 곳에서 참조되지 않은 객체를 참조합니다. 바 표시가있는 개체는 파이널 라이저에 도달 할 수 있습니다.

기본적으로 코드를 통해 도달 할 수 없지만 코드를 통해 도달 할 수없는 다른 개체를 통해 도달 할 수있는 개체입니다.

관련 문제