java - 将 Java 泛型参数类型限制为最终类的列表

标签 java generics final generic-list

T 在以下声明中不受限制。

abstract public class Defaults<T>

但是,我的Defaults 类只处理StringIntegerDouble。因此,我想将 T 限制为 StringIntegerDouble

显然,以下是不允许的,因为它们是 final :

abstract public class Defaults<T extends String&Integer&Double>

那我该怎么做呢?

最佳答案

你不能。您可以做的最接近的事情是给 Defaults 一个私有(private)构造函数

private Defaults() {}

...并仅为允许的类提供工厂方法:

public static Defaults<String> stringDefaults() { return new Defaults<>(); }
public static Defaults<Integer> integerDefaults() { return new Defaults<>(); }
public static Defaults<Double> doubleDefaults() { return new Defaults<>(); }

关于java - 将 Java 泛型参数类型限制为最终类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873977/

相关文章:

java - RestFB Instagram 集成

java - 安卓工作室堆栈=java.lang.NoClassDefFoundError : Failed resolution of: Landroid/icu/util/Calendar;

java - 为什么不为泛型自动装箱 Java 基本类型?

arrays - 我应该遵循哪种协议(protocol)才能在 Swift 中将一个通用值添加到另一个通用值?

java - 如何使用 JMockit 模拟类中的最终实例变量

java - 将 Vespa 扩展为 500 QPS 以进行搜索

java - Eclipse、Maven 和代码覆盖率

c++ - 如何从 C++ 中的函数返回一个 vector<T>

java - Checkstyle 在最终变量的命名约定上与普通 Java 不同?

java - 使用相同的字符串文字而不是最终变量有什么好处?