[英]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.