我正在从 XML 中提取值并尝试将其转换为适当的对象...可以说,值可以是数字/boolean 值/字符串。 举个例子...
<value> 123 </value>
<value> TRUE </value>
<value> some Strings </value>
我正在从 XML 中读取字符串值。知道将字符串转换为适当的 java 对象的最佳方法是什么吗? (即 BigDecimal/boolean 值/字符串) 这就是我想到的解决方案:
private Object convertParameterValIntoObject(String value){
Object toreturn = null;
BigDecimal numeric = null;
Boolean boo = null;
try{
//deal with numeric val
numeric = new BigDecimal(value.trim());
return numeric;
}
catch (NumberFormatException e) {
try{
//deal with Boolean
if(value.trim().equalsIgnoreCase("true") ||
value.trim().equalsIgnoreCase("false")){
boo = new Boolean(value.trim());
return boo;
}
else throw new Exception();
}
catch (Exception e1) {
// String
return value.trim();
}
}
}
提前致谢, 哈桑。
最佳答案
您可以使用 java.util.Scanner,它具有您需要的所有类型检测功能。这是一个工作示例。您需要确保从最具体到最不具体的顺序探测类型,这里我测试 boolean 值,然后是数字,然后是字符串。
String[] testValues = { "123", "123.4", "FALSE", "false",
"some strings" };
for (String test : testValues) {
Scanner scanner = new Scanner(test);
scanner.useDelimiter("^");
if (scanner.hasNextBoolean()) {
boolean value = scanner.nextBoolean();
System.out.println("boolean " + value);
} else if (scanner.hasNextDouble()) {
double value = scanner.nextDouble();
System.out.println("number " + value);
} else if (scanner.hasNext(".*")) {
String value = scanner.next();
System.out.println("string " + value);
}
}
输出
number 123.0
number 123.4
boolean false
boolean false
string some strings
关于java - 从字符串中检查对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670362/