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