簡體   English   中英

Java:獲取對象的值並將其解析為long

[英]Java: Get Value of an object and parse it as a long

我有一個對象,它的第一個字段是一個數字(BigDecimal,int ...)。 我想將其解析為 long 但在解析它時它說方法“ValueOf”不適用於 Object。

我試過這個。

if (list != null && !list.isEmpty()) {

        for (Object[] obj : list) {
            Object obj1 = obj[0];

            Dto dto= new Dto();

            dto.setId(Long.valueOf((obj[0])));

但是有一個錯誤

調用 toString 並將其解析為 Long 值:

 dto.setId(Long.parseLong(obj[0].toString()));
Long.parseLong(obj[0].toString());

Long.parseLong()期望 String 里面沒有任何格式符號。

如果您不關心格式,請考慮使用Long.toString()將長值轉換為字符串並使用Long.parseLong()將其轉換回來。

還有這個方法: Long.valueOf(str) ; 不同之處在於parseLong返回一個primitive longvalueOf返回一個new Long() object

更有效的方法是將其強制轉換為 Number。

public static long asLong(Object o) {
    return o instanceof Number 
           ? ((Number) o).longValue() 
           : Long.parseLong(o.toString());
}

注意:這以不同的方式處理錯誤情況。 例如,如果您有new BigDecimal("2.5")使用 longValue() 將返回2但 Long.parseLong("2.5") 將引發異常。 這取決於你喜歡什么樣的行為。

暫無
暫無

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

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