我自己用几个版本的eclipse编译都没问题,连个警告都没有,为什么这个代码在同事那里编译错误,我们都是jdk 1.7的,是他的编译器有问题吗?一查网上都说要这样搞
看不到图吗?代码是这样的 简单吧
Object obj=1;
int i = (int) o;
只能是jdk配置不对或者路径不对。看看什么错误,是找不到类还是什么。看具体错误信息处理环境问题。
你要转换成Integer类型啊。
他们提示的 Object不能转换成 int 原文就是 Object can not cast to int 但是我没问题啊,编译没错,运行没错
你要转换成Integer类型
public static void main(String[] args) {
Object o = 1;
int a = (Integer)o;
}
没理由不行呢,看不出原因~
关注
你确定你同事的是jdk 1.7吗? 是不是1.6啊 是编译报这个吧,我这里也是,jdk1.6的
Object o = 1;
int i = (Integer) o;
//这样就对了
//我的jdk也是1.6的,你那样写,我也报一样的错
以后类型转换还是用包装类靠谱,少用基本类型,包装类到基本类型自动转
类型转换从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是什么版本。