也许我的突触中只有一个结......
public static <T extends Number> T firstNonZero(T... values) {
for (T value : values) {
if (value.doubleValue() != 0.0) {
return value;
}
}
return (T) 0; // Cannot cast from int to T
}
我想我不需要解释上述方法。我的问题是我需要&#34;生成&#34;类型为T
的零。
我该怎么做?
答案 0 :(得分:5)
那么,怎么样:
public static <T extends Number> T firstNonZero(T... values) {
T zero = null;
for (T value : values) {
if (value.doubleValue() != 0.0) {
return value;
} else {
zero = value;
}
}
return zero;
}
假设至少有一个值传递给方法。
答案 1 :(得分:0)
这个怎么样:
public static <T extends Number> T firstNonZero(T... values) {
for (T value : values) {
if (value.doubleValue() != 0.0) {
return value;
}
}
return (T)Integer.class.cast(0); // Double class can do too but give 0.0 if double or we will have ClassCastException
}
此情况下,0号参数也适用