以伪代码为例:
public static<T> int findNumber(T xNumber, double a, int b){
if (xNumber == int) {
// do something... return some number...
} else {
return null;
}
有没有办法在实际运行的Java代码中表达这一点?
答案 0 :(得分:1)
您无法使用Java代码表达此特定情况。
您可能会发现an answer here有关原因。
但是,如果您希望将泛型用于整数,则Integer Java类支持通用性。它还实现了native int使用的每个基本操作(+ - * /%)。在您的示例中,您可以使用:
if (xNumber instanceof Integer)
甚至
if (xNumber.getClass() == Integer.getClass())
正如@Stultuske在评论中所建议的那样。
编辑:关于你班级设计的评论也是如此。您可能想要重新设计代码,因此您不必检查通用对象的类型(特别是因为您正在检查单个类类型)。
答案 1 :(得分:0)
班级Number导致几乎隐藏的存在,但非常有用。
public static <T extends Number> int findNumber(...)
... xNumber.intValue() // longValue(), doubleValue()
if (xNumber instanceof Integer) ...
由于类型擦除更多是不可行的。