编程语言
首页 > 编程语言> > 如何将Cloneable类型用作Java泛型类的参数

如何将Cloneable类型用作Java泛型类的参数

作者:互联网

我有一个通用类,需要能够克隆参数类型的对象.下面是一个非常简单的例子.编译器声称来自Object类型的clone()不可见.

public class GenericTest<T extends Cloneable>
    {
    T obj;
    GenericTest(T t)
        {
        obj = t;
        }
    T getClone()
        {
        // "The method clone() from the type Object is not visible."
        return (T) obj.clone();
        }
    }

我宁愿不让调用者进行克隆,因为还有其他事情必须发生以维护对象的完整性.上面的代码只是问题的一个例子,没有我必须维护的与克隆对象相关的其他数据的噪音.

有没有办法绕过这个或者这是Java设计师考虑合理化其缺点的另一个例子,相当于没有?

解决方法:

Java的一个错误.反思是正确的方法

static Method clone = Object.class.getMethod("clone"); 

static public <T extends Cloneable> 
T clone(T obj)
    return (T) clone.invoke(obj);

标签:cloneable,java,generics
来源: https://codeday.me/bug/20190726/1543653.html