Java类中为什么不能直接调用Object的clone()方法
黄舟
黄舟 2017-04-18 10:16:27
0
5
1036

在Java中所有的类都是Object的子类。

在Object类中有一个clone方法定义如下:

protected native Object clone() throws CloneNotSupportedException;

该方法的修饰符为protected,表示该方法可以在子类中调用


然后结果是调用不了

网上有回答是需要实现Cloneable接口,但即使实现了,也调用不到。
不实现Cloneable接口,只是报CloneNotSupportedException异常。

只能重写clone方法,并且使用super.clone()

疑惑这是为什么呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(5)
巴扎黑

Cloneable 인터페이스는 단지 플래그일 뿐이며 비어 있습니다.
Object의 복제 방법은 로컬 방법이므로 더 효율적입니다.
복제 방법을 사용하기 위한 몇 가지 조건

으아아아

 2) 객체의 복사본을 얻으려면 Object 클래스의 clone 메소드를 사용할 수 있습니다.

 3) 파생 클래스의 누적 clone 메서드를 재정의하고 공개로 선언합니다.

4) 파생 클래스의 clone 메소드에서 super.clone()을 호출합니다.

자세한 내용은
http://www.cnblogs.com/gw811/...

를 참고하세요.
PHPzhong

전화:

으아아아
刘奇

clone()은 보호되는 범위입니다. Cloneable 인터페이스를 상속받은 후에는 메서드를 재정의한 다음 메서드에서 상위 클래스의 clone() 메서드를 호출해야 합니다. 동시에 기본 복제본은 참조 개체의 단순 복제본일 뿐입니다. 직접 실행해보고 시도해 볼 수 있는 코드를 알려드리겠습니다.

으아아아 으아아아 으아아아
  • A는 복제 가능한 인터페이스를 상속하고 B에 대한 참조를 보유합니다.

Ty80

Cloneable 인터페이스를 구현하고 clone() 메서드를 재정의합니다.

Peter_Zhu

처음 봤을 때 굉장히 헷갈렸는데, 객체에 있는 clone 메소드가 직접 호출되는 것을 발견했습니다.
코드는 다음과 같습니다.

공용 클래스 CommonTest는 Cloneable을 구현합니다.{

으아아아

}

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!