Java 使用<;T>;父类中未定义的方法

Java 使用<;T>;父类中未定义的方法,java,generics,inheritance,extends,Java,Generics,Inheritance,Extends,我有一个方法如下 private <T extends GenericObject>void printStatus(final T result) { System.out.println("Status", result.getStatus()); System.out.println("GenericStatus", result.getGenericStatus()); System.out.println(&q

我有一个方法如下

private <T extends GenericObject>void printStatus(final T result) {
    System.out.println("Status", result.getStatus());
    System.out.println("GenericStatus", result.getGenericStatus());
    System.out.println("GenericMessage", result.getGenericMessage());

}

问题是结果。printStatus中的getstatus()给出编译错误。在printStatus方法中解决此问题的最简单方法是什么而不重构大量代码?

一种方法是将
getStatus
的声明推送到
generiobject
类:

公共类GenericObject{
公共抽象对象getStatus();
//其他方法。。。
}

其他类不必更改,因为允许子类专门化父方法的返回类型。

t
仅在一个位置出现时,在
t
中使方法泛型是没有意义的。相反,您可以只写:

private void printStatus(GenericObject result) { ... }
类型变量仅在出现在多个位置时才会增加值,例如:

<T> T choose(boolean condition, T ifTrue, T ifFalse) { 
    return condition ? ifTrue : ifFalse;
}
T选择(布尔条件,如果真,如果真){
返回条件?如果是:如果是;
}

List toList(Set){…}

因为它们表示多个参数之间或参数和返回之间的实际约束。

使GenericObject成为抽象类。它清楚地符合你的要求。请格式化你的帖子。坦率地说,我发现很难解析语法和类的方法名。很难读懂。对于声明零类型参数的类来说,名称
generiobject
不是一个误称吗?
<T> T choose(boolean condition, T ifTrue, T ifFalse) { 
    return condition ? ifTrue : ifFalse;
}
<T> List<T> toList(Set<T> set) { ... }