黑马程序员技术交流社区

标题: 内部类问题。 [打印本页]

作者: 南无ice    时间: 2015-12-16 23:40
标题: 内部类问题。
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修饰,也可以编译通过。显示结果啊。大家帮忙看下,


作者: hbcoding    时间: 2015-12-17 10:08
你用的肯定是JDK1.8,1.8版本是会这样的。可能算一个bug吧
作者: Hi.。    时间: 2015-12-17 16:42
hbcoding 发表于 2015-12-17 10:08
你用的肯定是JDK1.8,1.8版本是会这样的。可能算一个bug吧

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

嗯,有道理
作者: anuo    时间: 2015-12-18 22:32
大神到有,蹭个答案
作者: 洪志豪1994    时间: 2015-12-19 21:52
Jdk1.8不用加final就可以
作者: a54267490    时间: 2015-12-19 23:25
看看你的JDK版本




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2