Java泛型类型如何限制允许的类型数量

说,我有如下通用类型

public class GenericType<T> {

private T someVar;

public void setVar(T var) { this.someVar = var; }

//Rest of the code

}

我想让它只接受特定的类型(字符串/整数/双精度)。我知道有界通配符,但在这里对我没有帮助。在setVar()中,instanceof如果类型不是Integer

/ String等,我可以检查并引发异常。这是最好的方法吗?

在对此类型进行操作时,我遇到同样的问题。根据类型,我想执行不同的操作。继承和有界通配符似乎通常是解决此类问题的方法,但它们是原始包装器。

回答:

使用继承:

public abstract class Parent<T> {

public abstract void display(T t);

}

public class ChildString extends Parent<String> {

@Override

public void display(String t) {

// Do something here...

}

}

public class ChildInteger extends Parent<Integer> {

@Override

public void display(Integer t) {

// Do something here...

}

}

public class ChildDouble extends Parent<Double> {

@Override

public void display(Double t) {

// Do something here...

}

}

并访问子类,而不是直接访问父类。

这里再举一个例子:

public class GenericType {

public void display(Object t) {

String msg;

if(t instanceof String) {

msg = "String";

} else if (t instanceof Integer) {

msg = "Integer";

} else if (t instanceof Double) {

msg = "Double";

} else {

msg = "Another Object";

}

System.out.println(msg);

}

}

public class SpecificGeneric {

public static void main(String[] args) {

GenericType basicType = new GenericType();

basicType.display(new String());

basicType.display(new Integer(1));

basicType.display(new Double(0.1));

}

}

以上是 Java泛型类型如何限制允许的类型数量 的全部内容, 来源链接: utcz.com/qa/406820.html

回到顶部