局部内部类

来源:互联网 发布:lte mrr弱覆盖优化 编辑:程序博客网 时间:2024/04/30 13:51
局部内部类:在一个类的方法内部定义另外一个类,那么另外一个类就称作为局部内部类。
局部内部类要注意的细节:
1.如果局部内部类访问了一个局部变量,那么该局部变量必须使用final修饰
  1. /**
  2. * Author:Liu Zhiyong
  3. * Version:Version_1
  4. * Date:2016年6月13日21:02:38
  5. * Desc:局部内部类:在一个类的方法内部定义另外一个类,那么另外一个类就称作为局部内部类。
  6. 局部内部类要注意的细节:
  7. 1.如果局部内部类访问了一个局部变量,那么该局部变量必须使用final修饰
  8. */
  9. class Outer
  10. {
  11. String name = "外部类的name ";
  12. public void test(){
  13. //局部变量
  14. final int y = 100; //y什么时候从内存中消失?方法执行完毕之后y消失。
  15. //局部内部类
  16. class Inner{/*当test方法执行完毕之后,那么y马上从内存中消失,
  17. 而Inner对象在方法执行完毕的时候还没有从内存中消失,
  18. 而inner对象的print方法还在访问着y变量,这时候的y变量已经消失了,
  19. 那么就给人感觉y的生命周期已经被延长了。
  20. 解决方案:如果一个局部内部类访问一个局部变量的时候,
  21. 那么就让该局部类内部类访问这个局部变量的复制品。
  22. */
  23. int x = 10;
  24. public void print(){
  25. System.out.println("这是局部内部类的print方法。"+ name + y);
  26. }
  27. }
  28. Inner inner = new Inner(); //inner对象什么时候消失?Inner对象的生命周期比局部变量y的生命周期要长
  29. inner.print();
  30. }
  31. }
  32. class Demo60
  33. {
  34. public static void main(String[] args)
  35. {
  36. Outer outer = new Outer();
  37. outer.test();
  38. }
  39. }
0 0
原创粉丝点击