java - 从字符串中检查对象类型

标签 java xml

我正在从 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/

相关文章:

java - 打开存在的文件时出现 FileNotFoundException?

java - 按降序对字符串的 ArrayList 进行排序

java - 如何在 NavigationView 的项目上添加选取框文本?

java - 解析 SAX 中的特殊字符(&lt、&gt ..etc)

java - 通过 XPATH 查找没有特定父节点的节点

c# - 如何找出 WCF SOAP XML 响应的反序列化中错误的确切位置?

java - Guava ImmutableMap 的访问速度明显比 HashMap 慢

java - 如何在 RESTEasy 中使用通用模板 (<T>) 从类生成 XML 响应?

python - (Python) 属性错误 : 'NoneType' object has no attribute 'text'

android - 在 RecyclerView 中展开 View 不能正确设置动画