2015-01-07 6 views
2

내 코드에 사용 된 샘플이라는 클래스가 있습니다.java : 익명 객체의 장점

class Sample{ 
. 
. 
Object someMethod(){ 
    return someObject; 


} 
. 
. 
} 

내가 좋아하는 전화 : 나는 모든 클래스 (새로운 샘플())의 객체을 익명으로 만들 경우

내가 알고 싶은
Object ob = new Sample().someMethod(); 

어떤 장점이 있고 어떤 방법 경우를 필요로 전화 이 객체를 더 이상 사용하지 않습니다. 나는 어떤 이득을 얻을 것인가?

Sample s = new Sample(); 
s.someMethod(); 

(여기서 명시 적으로 로컬 변수에 new Sample()를 할당) :

+0

그런 개체가 즉시 * 가비지 수집 후보가 될 것입니다. 여기에 명확한 유스 케이스가 없다. –

+0

당신이 생각하는 것이 더 읽기 쉽습니다. – ajb

+4

익명 객체는 프로그램의 모든 데이터를 표현/유지하는 데 사용할 수 있지만 더 이상 사용하지 않는 경우 가비지 수집기가 메모리에서 정리합니다. 이렇게하면 할당 된 메모리가 정리됩니다. – Olu

답변

4

나는 다음과 대조 당신이 게시 코드에 대한 요구한다고 가정합니다.

중요한 성능이나 메모리 이점은 없습니다. 로컬 변수에 레퍼런스를 저장하고 메소드를 호출하면, 레퍼런스를 저장하는 데 아주 작은 성능 저하가있을 수 있다고 생각합니다. 그러나 일단 많은 컴파일러가 메소드가 호출되면 변수가 죽었다는 사실을 알게되고 할당을 최적화합니다. JIT 컴파일러가 작업을 완료 할 수 있습니다. 하지만 우리는 최대 몇 cpu주기를 말하고 있습니다.