自动装箱 0 到通用数字
Autoboxing 0 to Generic Number
也许我的神经突触打结了...
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
}
我想我不需要解释上面的方法。我的问题是我需要 "generate" 一个 T
.
类型的零
我该怎么做?
嗯,怎么样:
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;
}
这是假设至少有一个值被传递给该方法。
这个怎么样:
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 数字参数
也许我的神经突触打结了...
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
}
我想我不需要解释上面的方法。我的问题是我需要 "generate" 一个 T
.
我该怎么做?
嗯,怎么样:
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;
}
这是假设至少有一个值被传递给该方法。
这个怎么样:
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 数字参数