A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 南无ice 中级黑马   /  2015-12-16 23:40  /  697 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Outner
{
        int x = 4;

         void metool()
         {
         int  y = 5;
             
                 class Inner
             {         
                         void show()
                         {
                          System.out.println(y);
                         }
             }
                new Inner().show();
        }
}
class InnerDemo02
{
        public static void main(String[] args)
        {
                new Outner().metool();
        }
}
为什么我的局部变量y没有定义成最终,没用final修饰,也可以编译通过。显示结果啊。大家帮忙看下,

6 个回复

倒序浏览
你用的肯定是JDK1.8,1.8版本是会这样的。可能算一个bug吧
回复 使用道具 举报
hbcoding 发表于 2015-12-17 10:08
你用的肯定是JDK1.8,1.8版本是会这样的。可能算一个bug吧

JDK升级代码简化而已,就像泛型推断一样。
举个例子,接口里的成员变量,写int x = 5;  默认的修饰符其实系统写好了。这里的final也一样,你不写系统给你补上了
回复 使用道具 举报
Hi.。 发表于 2015-12-17 16:42
JDK升级代码简化而已,就像泛型推断一样。
举个例子,接口里的成员变量,写int x = 5;  默认的修饰符其 ...

嗯,有道理
回复 使用道具 举报
大神到有,蹭个答案
回复 使用道具 举报
Jdk1.8不用加final就可以
回复 使用道具 举报
看看你的JDK版本
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马