java如何调用T(泛型)的父类(super class)方法

标签 java

我有以下方法。我想查找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/

相关文章:

java - 如何从 java.sql.Time 创建一个 joda 持续时间?

java - 如何使用Java运行exe文件

Java eclipse包编译错误

java - JAXB - 编码(marshal)与 xsi :type

java - 如何使用 Apache Commons IO 以自定义名称复制 java 中的文件?

java - Libgdx画游戏逻辑

java - 无法从 java 连接到本地 mongoDB

java - Google App Engine + JSF 2 给出错误

java - 使用 URL 排除模式/使用 Guice 在开发模式下运行 App Engine

java - 遍历数组列表时删除空值