私はこのようなことをします...これは BigInteger と BigDecimal でも機能するはずです...ただし、テストしていません。
public Object getPrimitive(String primitiveAsString) {
String value = primitiveAsString;
try {
return Byte.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return Short.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return Integer.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return Float.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return Double.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return Long.valueOf(value);
} catch (NumberFormatException ex) { }
try {
return new BigInteger(value);
} catch (NumberFormatException ex) { }
try {
return new BigDecimal(value);
} catch (NumberFormatException ex) { }
if(value.length() == 1) {
return new Character(value.charAt(0));
}
return null;
}
編集: 入力が BigInteger/BigDecimal の場合に対応するようにソリューションを改善しました。このソリューションは正規表現を使用しません。