T
在以下声明中不受限制。
abstract public class Defaults<T>
但是,我的Defaults
课程仅处理String
,Integer
,Double
。因此,我想将T
限制为String
,Integer
,Double
。
显然,以下是不允许的,因为它们是决赛:
abstract public class Defaults<T extends String&Integer&Double>
我怎么能这样做?
答案 0 :(得分:7)
你做不到。您可以做的最接近的事情是给Defaults
一个私有构造函数
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<>(); }