これを効果的に行うジェネリックメソッドを作成したいと思います:
class MyClass {
static <T extends Number> T sloppyParseNumber(String str) {
try {
return T.valueOf(str);
} catch (Exception e) {
return (T)0;
}
}
}
上記は 2 つの理由でコンパイルされません。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 の値を返すという 2 つの操作を可能にする、プルするトリックがあることを願っていNumber
ます。