2016-08-14 4 views
0

사용 후 변수에 지정하지 않고 PrintWriter를 닫을 수 있습니까?

PrintWriter pw = new PrintWriter(ExampleStream); 
pw.print("Just Something"); 
pw.close(); 

그래서 윌의 PrintWriter 가깝게

new PrintWriter(ExampleStream).print("Just Something"); 

동일합니까?

+0

왜 그렇게 생각합니까? – Tunaki

+0

AutoCloseable이 가능할 수 있습니까? 이 인터페이스가 무엇인지는 확실하지 않습니다. – nickkoro

+2

이 인터페이스는 try-with-resources 문에 유용합니다. 자세한 내용은 https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Tunaki

답변

1

번호

그리고 자바의 익명 기술적 용어는 이름없이 로컬 클래스를 생성을 의미합니다. 당신이 한 것은 변수에 할당하지 않고 클래스의 인스턴스를 만드는 것입니다.

1

아니, 그들은 모두 같은 경우 당신의 두 번째 예에서

아닌, 질문 PrintWritter 가까이 (가) 실행 얻을 것이다 즉시 순간 pw.close을 얻을 것이다. while

질문의 첫 번째 경우에는 인쇄 작가가 즉시 폐쇄되지 않습니다. 객체에 대한 참조가 없으므로 new PrintWriter (ExampleStream) .print() 을 호출 한 후 다시이 객체를 사용할 수 없으므로 가비지 수집기에서 제거 할 수 있습니다. 가비지 컬렉터가 실행될 때 우리는 말할 수 없기 때문에이 객체가 언제 제거 될지에 대한 확신이 없습니다. 이 객체가 가비지 컬렉터에 의해 제거 될 수 있지만 프로세스가 pw.close()와 동일하지 않더라도 더 중요한 점은