pf281993959
pf281993959
采纳率0%
2015-06-26 09:41 阅读 1.7k

java类型转换的小问题

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

10条回答 默认 最新

  • huangshaocun duishuilvyu 2015-06-26 10:39

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

    点赞 1 评论 复制链接分享
  • wohenni0931 wohenni0931 2015-06-26 23:51

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

    点赞 1 评论 复制链接分享
  • pf281993959 pf281993959 2015-06-26 09:45

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

    点赞 评论 复制链接分享
  • danielinbiti danielinbiti 2015-06-26 09:50

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

    点赞 评论 复制链接分享
  • sias1991 mt172970621 2015-06-26 09:52

    你要转换成Integer类型啊。

    点赞 评论 复制链接分享
  • pf281993959 pf281993959 2015-06-26 10:02

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

    点赞 评论 复制链接分享
  • lovelj2012 江南小鱼 2015-06-26 10:57

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

    点赞 评论 复制链接分享
  • diaoliwei2 DreamTHT 2015-06-26 13:00

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

    点赞 评论 复制链接分享
  • u012455098 渝都晨雷 2015-06-26 13:49
        Object o = 1;
        int i = (Integer) o;
        //这样就对了
        //我的jdk也是1.6的,你那样写,我也报一样的错
    
    点赞 评论 复制链接分享
  • tongyi55555 JonsonJiao 2015-06-27 02: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是什么版本。

    点赞 评论 复制链接分享

相关推荐