【发布时间】:2021-01-24 23:37:39
【问题描述】:
我有一个方法如下
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());
}
getGenericStatus 和 getGenericMessage 方法在 genericObject 父类中定义。但是,getStatus 方法是在扩展 GenericObject 的子类中定义的,getStatus 的返回类型是一个枚举,每个子类都有不同的定义。比如
public class A extends GenericObject {
/** Enum Astatus. */
private AStatus status;
AStatus getStatus() {
return status;
}
}
public class B extends GenericObject {
/** Enum Bstatus. */
private BStatus status;
BStatus getStatus() {
return status;
}
}
问题是 printStatus 中的 result.getstatus() 给出编译错误。在不重构大量代码的情况下,在 printStatus 方法中解决此问题的最简单方法是什么?
【问题讨论】:
-
使 GenericObject 成为一个抽象类。它显然符合您的要求。
-
请格式化您的帖子。坦率地说,我发现很难解析您的语法和类方法的名称。很难读。
-
GenericObject这个名字难道不是对声明零类型参数的类的误称吗?
标签: java generics inheritance extends