java -- 禁止对象clone
来源:互联网 发布:java try是干什么的 编辑:程序博客网 时间:2024/05/17 00:40
/**Copyright (c) 2016, gp.inc and/or its affiliates. All rights reserved.*/package thinkingInJava.thinkingInJava;public class Ordinary {}class WrongClone extends Ordinary { public Object clone() throws CloneNotSupportedException { return super.clone(); }}class IsCloneable extends Ordinary implements Cloneable { public Object clone() throws CloneNotSupportedException { return super.clone(); }}class NoMore extends IsCloneable { public Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); }}class TryMore extends NoMore { public Object clone() throws CloneNotSupportedException { return super.clone(); }}class BackOn extends NoMore { private BackOn duplicate(BackOn b) { return new BackOn(); } public Object clone() { return duplicate(this); }}final class ReallyNoMore extends NoMore {}
/**Copyright (c) 2016, gp.inc and/or its affiliates. All rights reserved.*/package thinkingInJava.thinkingInJava;public class TestOrdinary { static Ordinary tryToClone(Ordinary ord) { String id = ord.getClass().getName(); Ordinary x = null; if (ord instanceof Cloneable) { try { System.out.println("attempting " + id); x = (Ordinary) ((IsCloneable) ord).clone(); System.out.println("cloned " + id); } catch (CloneNotSupportedException e) { System.out.println("could not clone " + id); } System.out.println(""); } return x; } public static void main(String[] args) { Ordinary[] ord = { new IsCloneable(), new WrongClone(), new NoMore(), new TryMore(), new BackOn(), new ReallyNoMore(), }; Ordinary x = new Ordinary(); for (int i = 0; i < ord.length; i++) { tryToClone(ord[i]); } }}
1 0
- java -- 禁止对象clone
- java对象克隆clone
- java 对象 克隆 clone
- Java clone()克隆对象
- JAVA 对象克隆clone
- Java 对象Clone
- java对象克隆clone
- Java对象clone
- java 对象clone
- Java 对象克隆(clone)
- 关于java对象Clone问题
- 关于java对象复制(clone)
- Java 对象浅层clone()
- 关于java对象复制(clone)
- java 实现对象的clone
- java的对象与引用,影子clone与深度clone
- Java| Java对象克隆Clone(1)
- Java| Java对象克隆Clone(2)
- 自定义控件 实现曲线加载数据
- maven ArtifactTransferException: Failure to transfer
- String、StringBuffer、StringBuilder的区别
- web文件下载、真实路径问题
- SourceTree管理gitHub
- java -- 禁止对象clone
- Linux irq
- 当RecyclerView遇到Inconsistency detected崩溃时
- Kmeans和kmeans++
- FTP命令详解
- 2016.7.20 ADT cocos2dx工程导入格外java
- unity 协成的执行顺序
- js 判断各种数据类型
- SpringMVC