I 효과적으로이 작업을 수행하는 일반적인 방법을 만들고 싶습니다가 더 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);
는 자바 가능한 일반적인 방법 위에 구현되어 있습니까? 그렇다면 어떻게? 그렇다면 좋은 대체 접근 방법은 무엇입니까?
편집 : 몇 가지 가능한 중복이있는 것으로 보이지만 정확히 이것을 다루는 하나를 찾지 못했습니다. 이 2 가지 연산을 허용하는 몇 가지 트릭이 필요합니다. Number
서브 클래스의 문자열을 구문 분석하고 Number
하위 클래스의 0 값을 반환하십시오.
['Number'] (http://docs.oracle.com/javase/6/docs/api/java/lang/Number.html) 추상 클래스는 파싱이 특정 유형에 의해 수행되기 때문에 string을 유형으로 구문 분석하는 메소드를 포함하지 않습니다. 제안은 제네릭을 사용하지 않고 '... ToInteger','... ToDouble' 등과 같은 함수를 만드는 것입니다. –
나는 쉬운 방법이 없다고 생각합니다. 나는 단순히 'new MyClass (value) .asDouble();'과 같은 것을 사용하고 asInteger, asLong, asFloat, asDouble 등의 메소드를 수동으로 구현한다. – assylias
'T.valueOf()'wouldn ' 정적 메소드'Number.valueOf()'가 있더라도 작동하지 않습니다. 당신은 단순히 이와 같은 제네릭 타입을 사용할 수 없습니다. –