[英]Check if a string is parsable as another Java type
我试图找到一种方法来检查字符串是否可解析为特定类型。
我的用例是:
我有一个从字段(名称和类型)映射创建的动态 html 表单
在我的控制器中,我从 http 请求中获取表单值作为字符串
我想检查检索到的字符串是否可以解析为所需的类型,以便在不可能的情况下在表单中显示错误消息。
有人知道一种检查解析是否可行的方法,而无需逐一测试每种类型吗? (双精度、整数、日期、BigDecimal 等)
我正在 Java 或第三方库中寻找类似的东西:
myString.isParsableAs(Class<?> wantedType)
谢谢您的帮助 !
制作从Class
到Predicate
的映射,并使用它来为您的类获取“测试器对象”。 下面是一个例子:
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");
}
您不必浏览整个测试人员列表; 检查只会对您要测试的类型进行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.