有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类检查字符串是否可以作为另一个Java类型进行分析

我试图找到一种方法来检查字符串是否可以作为特定类型进行分析

我的用例是:

  • 我从字段(名称和类型)的映射中创建了一个动态html表单。

  • 在我的控制器中,我从http请求中以字符串形式返回表单值

  • 我想检查检索到的字符串是否可以作为想要的类型进行分析,以便在不可能的情况下在表单中显示错误消息

是否有人知道一种方法,可以在不逐个测试每种类型的情况下检查解析是否可行?(双精度、整数、日期、大十进制等)

我正在Java或第三方库中寻找类似的内容:

myString.isParsableAs(Class<?> wantedType)

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    制作一个从ClassPredicate的映射,并使用该映射为类获取一个“tester对象”。以下是一个例子:

    static Map<Class<?>,Predicate<String>> canParse = new HashMap<>();
    static {
        canParse.put(Integer.TYPE, s -> {try {Integer.parseInt(s); return true;} catch(Exception e) {return false;}});
        canParse.put(Long.TYPE, s -> {try {Long.parseLong(s); return true;} catch(Exception e) {return false;}});
    };
    

    现在可以检索该类的谓词,并测试字符串,如下所示:

    if (canParse.get(Long.TYPE).test("1234567890123")) {
        System.out.println("Can parse 1234567890123");
    } else {
        System.out.println("Cannot parse 1234567890123");
    }
    

    您不必浏览整个测试人员列表;该检查将仅针对要测试的类型进行

    Demo.