gpt4 book ai didi

java - 检查字符串是否可解析为另一种 Java 类型

转载 作者:行者123 更新时间:2023-11-30 08:31:56 24 4
gpt4 key购买 nike

我正在尝试寻找一种方法来检查字符串是否可解析为特定类型。

我的用例是:

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

  • 在我的 Controller 中,我以字符串形式从 http 请求中取回表单值

  • 我想检查检索到的字符串是否可以解析为所需类型,以便在无法解析时在表单中显示错误消息。

有人知道一种方法来检查解析是否可行而无需逐一测试每种类型吗? ( double 、整数、日期、BigDecimal 等)

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

myString.isParsableAs(Class<?> wantedType)

感谢您的帮助!

最佳答案

制作一个从ClassPredicate 的映射,并使用它来为您的类获取一个“测试对象”。这是一个例子:

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.

关于java - 检查字符串是否可解析为另一种 Java 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40402756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com