2 pf281993959 pf281993959 于 2015.06.26 17:41 提问

java类型转换的小问题

图片说明
我自己用几个版本的eclipse编译都没问题,连个警告都没有,为什么这个代码在同事那里编译错误,我们都是jdk 1.7的,是他的编译器有问题吗?一查网上都说要这样搞

10个回答

huangshaocun
huangshaocun   2015.06.26 18:39

你要转换成Integer类型
public static void main(String[] args) {
Object o = 1;
int a = (Integer)o;
}

wohenni0931
wohenni0931   Rxr 2015.06.27 07:51

以后类型转换还是用包装类靠谱,少用基本类型,包装类到基本类型自动转

pf281993959
pf281993959   2015.06.26 17:45

看不到图吗?代码是这样的 简单吧
Object obj=1;
int i = (int) o;

danielinbiti
danielinbiti   Ds   Rxr 2015.06.26 17:50

只能是jdk配置不对或者路径不对。看看什么错误,是找不到类还是什么。看具体错误信息处理环境问题。

sias1991
sias1991   2015.06.26 17:52

你要转换成Integer类型啊。

pf281993959
pf281993959   2015.06.26 18:02

他们提示的 Object不能转换成 int 原文就是 Object can not cast to int 但是我没问题啊,编译没错,运行没错

lovelj2012
lovelj2012   2015.06.26 18:57

没理由不行呢,看不出原因~
关注

diaoliwei2
diaoliwei2   Rxr 2015.06.26 21:00

你确定你同事的是jdk 1.7吗? 是不是1.6啊图片说明 是编译报这个吧,我这里也是,jdk1.6的

diaoliwei2
diaoliwei2 还是Integer转吧
2 年多之前 回复
u012455098
u012455098   2015.06.26 21:49
    Object o = 1;
    int i = (Integer) o;
    //这样就对了
    //我的jdk也是1.6的,你那样写,我也报一样的错
tongyi55555
tongyi55555   2015.06.27 10:56

类型转换从1.7开始有了一些变化,1.7之前,Object向下转型都是需要使用包装类型的,比如你的代码中必须使用Integer,如下:

 int a = (Integer)o;

如果不使用Integer,而使用int,编译不了的,直接报错**Cannot cast from Object to int**。

而从1.7开始,类型转换有了一些变化,正如你自己写的那样,在JDK1.7上编译下面的代码是没有问题的:

 int a = (int) o;

也就是说1.7开始支持直接将Object转换为基本类型了,虽然在JDK1.7的更新和说明中没有提到这个东西,但是他是实实在在存在的,不会报异常,也没有警告。

最后说说你同事的问题,代码肯定是没有问题的,就是环境设置的问题了,我们知道Eclipse是可以指定使用的JDK的版本的,如果你同事的电脑上安装了多个JDK的话,可能他认为使用的JDK是17或以上其实指定的是1.6或以下,从而造成你电脑可以,他电脑不行。另外跟Eclipse的版本没有关系,关键是看你Eclipse指定的JDK是什么版本。

Csdn user default icon
上传中...
上传图片
插入图片