我正试图在Java中将一个Object类型转换为Long类型,我得到了如下结果:
public static Long castObjectToLong(Object object) {
return ((Long)object).longValue();
当我运行时,它会抛出ClassCastException。我正试图在Java中将一个Object类型转换为Long类型,我得到了如下结果:
public static Long castObjectToLong(Object object) {
return ((Long)object).longValue();
当我运行时,它会抛出ClassCastException。当您编写 return ((Long)object).longValue();
时,会导致 ClassCastException
,因为 Object 不是 Long。我的意思是如果 Object o = new Long()
,则可以进行转换((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;
}
}
我先将对象转换为字符串,然后将字符串转换为长整型。请看这段代码是否适合您使用。
你遇到了ClassCastException
,可能是因为你试图将java.lang.Integer
直接转换为java.lang.Long
而导致的。
尝试将对象转换为字符串,然后将其作为参数传递给Long
的构造函数。
public static Long castObjectToLong(Object object) {
return new Long(object.toString());
}
Long.valueOf(object.toString())
代替。 - E Ciotti你可以尝试像这样做:
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
============= 无法转换类型
result = ((Long) object).longValue()
简化为result = (Long) object;
。 - MikolasanLong.parseLong((String.valueOf(object)))
long
值而不是Long.longValue()
方法。你使用的方法只会给出long值,但你不想要原始数据类型的值,而是想要Long
,所以简单地进行强制转换即可解决问题!
即return (Long)object
而不是((Long)object).longValue();
将对象转换为长整型的最简单方法是:
public class Test {
public static void main(String[] args) {
Object a=15;
System.out.println(Long.parseLong(a.toString()));
}
}
输出:15
我喜欢使用BigDecimal
。它简单而且不易出错。即使你的对象包含小数,它也能处理。
long l = new BigDecimal(String.valueOf(object).setScale(0).longValue());
Object
强制转换为Long
,你期望得到什么? - Frank Pufferpublic static long castObjectToLong( ...
怎么样? - Fildor