我有一些我想写的代码,大致是这样的:
public enum Type {
Small,
Medium,
Large;
}
public class ColumnType<T extends Enum<Type>> {
//implementation not important
}
public abstract class Driver {
//other stuff
public abstract ColumnType<Type.Small> typeSmall();
public abstract ColumnType<Type.Medium> typeMedium();
public abstract ColumnType<Type.Large> typeLarge();
}
基本上我想强制
Driver
的实现子类提供返回非常特定类型的方法实现。这三个抽象方法不能按书面方式工作,IDE 在方法签名上显示“未知类”,如果我删除“.Small”和“.Medium”并在驱动程序类方法中单独使用 Type
,然后就可以了。我已经检查了所有导入,我正在使用正确的 Type
枚举/类。
我通常不会对 Java 的泛型有如此深入的了解,这种类型的东西是否受支持?我如何强制子类使用枚举返回特定的
ColumnType
对象?他们返回 ColumnType
还不够,我需要他们返回特定 ColumnType
的 Type
。
我已经尝试了一些变体,这个看起来最干净并且应该可以工作,所以我将其留在这里以解决问题。
您期望从什么返回
公共抽象ColumnType
typeSmall();
从你的(错误的)语法,它总是返回
Type.Small
。
肯定不是你想要的。