Java에서 int 또는 vector로 finalize 메소드를 호출 할 수 있습니까?finalize 메서드를 int 또는 vector로 호출 할 수 있습니까?
답변
int
은 개체가 아니며 메서드가 없습니다.
java.util.Vector
은 (모든 객체와 마찬가지로) finalize()
메서드를 가졌지 만 가비지 수집시 자동으로 호출됩니다.
명시 적으로 호출 할 의미 인 finalize()
메서드를 작성하면 안됩니다. 이는 놀람의 원칙에 대한 심각한 위반 일 수 있기 때문입니다.
당신의 동기는 무엇이며 가비지 수집과 어떤 관련이 있습니까? 개체를 수집 할 수있게하려면 이 아니고 호출 완료 인 모든 강력한 참조를 제거해야합니다.
가비지 컬렉션이 중요한 기준 읽어주십시오과 최종에 특히 절 부 A.3.6있어서 finalize()
가 java.lang.Object
에서 상속 The Truth About Garbage Collection
finalize 메서드가 가비지 컬렉터와 관련이 없다고 생각하십니까? – Seva
@ Seva : 나는 그것이 관련이 없다고 말하지 않습니다.당신이 직접 호출해서는 안되며 호출하는 것은 객체 수집을하지 않는다고 말합니다. Java VM는 객체의 메모리가 할당 해제되기 전에 존재하는 경우 finalize를 호출합니다. ** 다시 ** 철자가 모두 나와 있기 때문에 ** 위의 링크를보십시오. –
finalize 메서드가 있으면 그것이 유용한 것이라고 생각합니다. 그래서 진정 해요. :피. 나는 너에게 +1을 줄 것이다. – Seva
. Java int
은 기본 유형이며 이러한 유형은 객체로 간주되지 않으므로 해당 유형에 대해 finalize를 호출 할 수 없습니다.
질문에 너무 많은 잘못된 가정이 있기 때문에 일부는 "괴롭힘"이라고 생각합니다.
int
은 원시이므로 호출 할 finalize 메소드가 없습니다.
Vector
은 Java 1.2 (1998)에서 ArrayList로 대체 된 레거시 클래스입니다. 그것은 보호 된 finalize 메소드를 가지고 있습니다. protected
은 하위 클래스에서만 호출해야 함을 의미합니다. 따라서 쉽게 액세스 할 수 없습니다.
그러나 Vector 나 다른 클래스에서 finalize를 호출하는 것은 좋지 않습니다. 호출하려는 기능이있는 finalize 메서드가있는 경우 finalize()를 호출하는 대신 동일한 작업을 수행하는 public 메서드를 만듭니다.
BTW : Vector.finalize()를 호출 했더라도 뭐든지해라. 그것은 {}
- 1. finalize() 메서드를 잘 사용합니다.
- 2. VB.NET에서 모듈을 Finalize() 또는 Dispose() 할 수 있습니까?
- 3. 변수를 사용하여 메서드를 호출 할 수 있습니까?
- 4. UIResponderStandardEditActions에서 select 메서드를 호출 할 수 있습니까?
- 5. 컨트롤러에서 Daemon 메서드를 호출 할 수 있습니까?
- 6. finalizer는 다른 관리되는 클래스의 메서드를 호출 할 수 있습니까?
- 7. PHP __destruct() 메서드를 호출 할 수 있다고 믿을 수 있습니까?
- 8. Java 초급 질문 : 메서드를 내부에서 호출 할 수 있습니까?
- 9. sharekit에서 공유가 끝나면 메서드를 호출 할 수 있습니까?
- 10. ExpressionLanguage (EL)은 NULL 인수가있는 메서드를 호출 할 수 있습니까?
- 11. 키 입력시 어떻게 메서드를 호출 할 수 있습니까?
- 12. C 함수에서 Objective-C 메서드를 호출 할 수 있습니까?
- 13. Ajax Javascript 메서드를 호출 할 수 없습니다.
- 14. JQuery에서 페이지 메서드를 호출 할 수 없습니까?
- 15. 사용자 정의 메서드를 호출 할 수 없습니다.
- 16. void를 반환하는 webservice의 비동기 메서드를 어떻게 호출 할 수 있습니까?
- 17. .NET의 동적 메서드에서 내부 메서드를 호출 할 수 있습니까?
- 18. 플래시 무비에서 자바 클래스 메서드를 호출 할 수 있습니까?
- 19. 응용 프로그램에서 활동에 직접 메서드를 호출 할 수 있습니까?
- 20. 다른 메서드 내에서 정적 메서드를 호출 할 수 있습니까?
- 21. performSelector를 사용해야합니까? 또한 메서드를 정상적으로 호출 할 수 있습니까?
- 22. 다른 창 컨텍스트에서 Javascript 메서드를 호출 할 수 있습니까?
- 23. DLL을 통해 C++ 컴파일러 인라인 메서드를 호출 할 수 있습니까?
- 24. 어떻게 Perl 스칼라에서 메서드를 호출 할 수 있습니까?
- 25. 브라우저에서 URL을 호출하여 WSDL 메서드를 호출 할 수 있습니까?
- 26. asp.net MVC의 다른 컨트롤러에서 컨트롤러의 메서드를 호출 할 수 있습니까?
- 27. 어떻게 속성 클래스가 Java에서 '부모'클래스의 메서드를 호출 할 수 있습니까?
- 28. 클래스의 main() 메서드를 java의 다른 클래스에서 호출 할 수 있습니까
- 29. 다른 스레드에서 잠긴 개체의 메서드를 호출 할 수 있습니까?
- 30. 가상 메서드를 호출 할 클래스를 지정할 수 있습니까?
인 Object.finalize()를 상속하지 않습니다. 예를 들어 C#에서는 int도 객체이므로 메서드가 있습니다. – Seva
@Seva : 나는 놀라지 않고 있지만 몇 가지 나쁜 가정이 있으며 가장 중요한 것은 C#이 아닙니다. –
결코 finalize 메서드를 호출하지 마십시오. – MeBigFatGuy