T
在以下声明中不受限制。
abstract public class Defaults<T>
但是,我的Defaults
类只处理String
、Integer
、Double
。因此,我想将 T
限制为 String
、Integer
、Double
。
显然,以下是不允许的,因为它们是 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/