我想创建一个有效地做到这一点的通用方法:
class MyClass {
static <T extends Number> T sloppyParseNumber(String str) {
try {
return T.valueOf(str);
} catch (Exception e) {
return (T)0;
}
}
}
现在上面没有编译有两个原因:没有Number.valueOf()
方法和 0 不能强制转换为T
.
示例用法:
String value = "0.00000001";
System.out.println("Double: " + MyClass.<Double>sloppyParseNumber(value));
System.out.println("Float: " + MyClass.<Float>sloppyParseNumber(value));
double d = MyClass.sloppyParseNumber(value);
float f = MyClass.sloppyParseNumber(value);
是否可以使用 Java 实现上述通用方法?如果是,如何?如果不是,有什么好的替代方法?
编辑:似乎有一些可能的重复,但我没有找到一个,它完全涵盖了这一点。我希望有一些技巧可以拉动,这将允许这两个操作:将字符串解析为Number
子类,并为子类返回 0 值Number
。