黑马程序员技术交流社区
标题:
内部类
[打印本页]
作者:
dragonsoull
时间:
2015-8-12 21:23
标题:
内部类
package com.itheima;
public class InnerDemo {
public static void main(String[] args) throws Exception {
new Outer().method();
}
}
class Outer{
int x = 3;
void method()
{
int y = 4;
class Inner
{
void function()
{
System.out.println(y);
}
}
new Inner().function();
}
}
为什么我的内部类可以访问外部类中没有用final修饰的局部变量??不是说好不能访问的么??这个代码是从毕老师视频里面出来的,毕老师那里编译没通过,我的编译通过了。。。。。。难道是因为我用了jdk8?
作者:
shuguang
时间:
2015-8-12 21:33
你懂里面的内涵吗?能不能解释一下啊?
作者:
gdh911125
时间:
2015-8-12 21:35
应该是JDK的问题,我用的是JDK1.7就报错了,说y没有被final修饰
作者:
孟茹
时间:
2015-8-13 20:10
是的,jdk1.8以后可以内部类可以直接访问方法中的局部变量,但是不可以修改,修改是会报错的
作者:
孟茹
时间:
2015-8-13 20:13
附上jdk1.8新特性
刚查了下跟1.8相关的新特性,中间提到一个lambda 项目,解决或部分解决了java匿名内部类中如下缺点:
1. 语法相对复杂。
2. 在调用内部类的上下文中,指引和this的指代容易混淆。
3. 类加载和实例创建语法不可避免。
4. 不能引用外部的非final对象。
5. 不能抽象化控制流程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2