我有以下方法。我想查找T是否有父类(super class),如果有则调用父类(super class)的cloneEntity方法
public Clone(Class<T> typeParameterClass) {
this.typeParameterClass = typeParameterClass;
}
public T cloneEntity(){
T clonedEntity = typeParameterClass.newInstance();
Class superClass = typeParameterClass.getSuperclass();
if(superClass != null){
//call clone method of the superclass to copy superclass properties
?????????
}
}
更多说明
我不想实例化父类(super class)。我正在尝试创建一个说地址的实例。 Address 扩展了 BaseEntity 并具有 deepCopy() 方法。 BaseEntity本身有一个deepCopy()方法。创建 Address 的实例后,我想调用 Address 上的 deepCopy() 方法,然后调用父类(super class) BaseEntity
更多说明
我想摆脱每个对象(如地址、用户等)中的 deepCopy() 方法,并创建一个通用的方法。因此 T 可以是地址或用户,但我想在通用实现中调用 T 的父类(super class)
最佳答案
每个不显式扩展
任何内容的类都将java.lang.Object
作为父类(super class)(接口(interface)和基元不是类),因此检查不是'不要做你认为应该做的事。
如果你想检查一个类是否实现了cloneable,你可以这样做:
Cloneable.class.isAssignableFrom( YourType.class );
关于java如何调用T(泛型)的父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173532/