我正在尝试在Java中将Object类型转换为Long类型,并得到:
public static Long castObjectToLong(Object object) {
return ((Long)object).longValue();
当我运行时,它会抛出ClassCastException
答案 0 :(得分:16)
当你写return ((Long)object).longValue();
导致ClassCastException因为Object不是Long.That我的意思是如果Object o = new Long(),那么你可以使用cast((Long)对象。)这是我写的例子就像:
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.Please看到此代码可以使用或不使用。
答案 1 :(得分:3)
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));
}
}
答案 2 :(得分:3)
您得到了ClassCastException
,因为您可能试图将java.lang.Integer
转换为java.lang.Long
,而这无法直接完成。
尝试将对象转换为String,然后将其作为参数传递给Long
public static Long castObjectToLong(Object object) {
return new Long(object.toString());
}
答案 3 :(得分:1)
以下代码可能有所帮助:
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
=============无法投射
答案 4 :(得分:0)
我喜欢使用long l = new BigDecimal(String.valueOf(object).setScale(0).longValue());
。简单且无错误。即使您的对象包含小数,它也会处理它。
enpy
答案 5 :(得分:0)
Long.parseLong((String.valueOf(object)))
答案 6 :(得分:0)
这是因为您返回的是 TileMap
值而不是您使用的 long
方法,该方法只会给出长值,但您不想要原始数据类型值,而是想要 Long.longValue()
所以简单地投射它会起作用!!
即 Long
而不是 return (Long)object