老兄你这个代码创建内部类的意义都没有啊- class Outer{
- public Object get(){
- int x = 1;
- class Inner{
- public int hashCode() {
- return x ;
- }
- }
- Inner in = new Inner();
- return in;
- }
- }
- public class PropTest {
- public static void main(String[] args) {
- Object o = new Outer().get();
- System.out.println(o.hashCode());
- }
- }
复制代码 我给你写了个代码你看一下
创建Outer对象,调用get方法,获取了Object对象,这时get方法弹栈,没有加final的x也弹栈,主函数又调用了hashcode方法,方法中要访问x,此时x已经不在了 就不能访问
我这里写hashcode方法时覆盖了Object的hashcode,只是为了方便。
final其实虚拟机将修饰的那个变量储存到了内部类中 |