簡體   English   中英

將 Object 投射到 Java 中

[英]Cast an Object To Long in Java

我正在嘗試將 Object 類型轉換為 Java 中的 Long 類型,我得到了:

public static Long castObjectToLong(Object object) {
    return ((Long)object).longValue();

當我運行時,它會拋出 ClassCastException

當你寫return ((Long)object).longValue(); 導致 ClassCastException 因為 Object is not Long. That I mean is if Object o = new Long(), then you can make cast ((Long)object). 這是我寫的例子就像:

public class Test {

    public static void main(String args[]){
        System.out.println(convertToLong(10));
    }

    public static Long convertToLong(Object o){
        String stringToConvert = String.valueOf(o);
        Long convertedLong = Long.parseLong(stringToConvert);
        return convertedLong;

    }

}

我先將 Object 轉換為 String。然后將 String 轉換為 Long。請查看此代碼是否適合您。

您得到ClassCastException是因為您可能試圖將java.lang.Integer轉換為無法直接完成的java.lang.Long

嘗試將對象轉換為字符串,然后將其作為參數傳遞給Long構造函數

public static Long castObjectToLong(Object object) {
   return new Long(object.toString());
}

你可以這樣嘗試:

 public class HelloWorld{
public static Long castObjectToLong(Object object) {
  return Long.parseLong(object.toString());
       }
    public static void main(String []args){
       System.out.println("Hello World");
       Object object=1234;
        System.out.println(castObjectToLong(object));
    }
}

以下代碼可能會有所幫助:

public class CastObjectToLong {
    public Long castLongObject(Object object) {
        Long result = 0l;
        try {
            if (object instanceof Long)
                result = ((Long) object).longValue();
            else if (object instanceof Integer) {
                result = ((Integer) object).longValue();
            } else if (object instanceof String) {
                result = Long.valueOf((String) object);
            }
            System.out.println(result);
        } catch (Exception e) {
            System.out.println("============= cannot cast");
            // do something
        }
        return result;
    }

    public static void main(String... args) {
        CastObjectToLong castObjectToLong = new CastObjectToLong();
        Object object1 = 12; // Integer
        Object object2 = "12"; // String
        Object object3 = 12l; // String
        Object object4 = "abc"; // String

        castObjectToLong.castLongObject(object1);
        castObjectToLong.castLongObject(object2);
        castObjectToLong.castLongObject(object3);
        castObjectToLong.castLongObject(object4); // exception here
    }

}

輸出:

12

12

12

============== 無法投射

在您的代碼中,由於 Object 不長,因此引發了ClassCastException 如果您的 object 是 null,也有可能遇到NullPointerException

因此,最好的解決方案是對 object 進行 null 檢查,然后使用String.valueOftoString()將其轉換為字符串,然后將其解析為 Long。

The difference between String.valueOf(object) and object.toString() won't matter here, as the former returns null when the object is null where as the latter throws NullpointerException .

我喜歡使用BigDecimal 簡單且無錯誤。 即使您的對象包含小數,它也會處理它。

long l = new BigDecimal(String.valueOf(object).setScale(0).longValue());

Long.parseLong((String.valueOf(object)))

這是因為您返回的是long值而不是Long.longValue()方法,您使用的方法只會給出 long 值,但您不想要原始數據類型值,而是想要Long所以簡單地轉換它就可以了! return (Long)object而不是((Long)object).longValue();

將 object 轉換為 Long 的最簡單方法是:

公共 class 測試 {

public static void main(String[] args) {
    Object a=15;
    
    System.out.println(Long.parseLong(a.toString()));
}

}

output:15

暫無
暫無

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

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