Java 泛型,为返回特定 Enum 值的方法定义签名

问题描述 投票:0回答:1

我有一些我想写的代码,大致是这样的:

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

我已经尝试了一些变体,这个看起来最干净并且应该可以工作,所以我将其留在这里以解决问题。

java generics enums
1个回答
0
投票

您期望从什么返回

公共抽象ColumnType typeSmall();

从你的(错误的)语法,它总是返回

Type.Small

肯定不是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.