不相关对象的通用方法 - java

ner*_*sol 2 java generics

我有以下两个课程:

public Class A{
    String name;
    Integer age;

    //setters and getters
}
Run Code Online (Sandbox Code Playgroud)

public Class B{
    String name;
    Integer age;
    Integer height;

    //setters and getters
}
Run Code Online (Sandbox Code Playgroud)

和以下方法

public String getMyName(B b){
    return b.getName()+" "+b.getAge()+" "+b.getHeight();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能重构此方法以使用泛型,这将允许我为这两个不同类的对象调用它?

例如

public <T> String getMyName(T t){
    return t.getName()+" "+t.getAge()+( t instanceof B ? " "+t.getHeight() : "");
}
Run Code Online (Sandbox Code Playgroud)

当然它不起作用,因为t知道方法getName,getAgegetHeight.

类没有任何关系(我知道它们可以从一个公共类继承并使用,<T extends C>但它们没有超类或公共接口)

Tho*_*mas 10

不,如果不使用通用接口或超类,这对于泛型来说是不可能的.你可以使用反射,但我建议反对,并建议提供一个通用的界面.

正如其他人所说,还有其他方法来处理这种情况(例如方法重载或传递Object,使用instanceof和强制转换),但如果你可以使用通用接口,我仍然会这样做.

请注意,Java泛型是unlinke C++泛型/模板,它们可以提供您想要做的事情 - 并且有很好的理由来解决这个问题.