簡體   English   中英

檢查字符串是否可解析為另一種 Java 類型

[英]Check if a string is parsable as another Java type

我試圖找到一種方法來檢查字符串是否可解析為特定類型。

我的用例是:

  • 我有一個從字段(名稱和類型)映射創建的動態 html 表單

  • 在我的控制器中,我從 http 請求中獲取表單值作為字符串

  • 我想檢查檢索到的字符串是否可以解析為所需的類型,以便在不可能的情況下在表單中顯示錯誤消息。

有人知道一種檢查解析是否可行的方法,而無需逐一測試每種類型嗎? (雙精度、整數、日期、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");
}

您不必瀏覽整個測試人員列表; 檢查只會對您要測試的類型進行。

演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM