个性化阅读
专注于IT技术分析

Java Local内部类

本文概述

在方法内部创建的类(即方法内部)在Java中称为本地内部类。如果要调用本地内部类的方法, 则必须在方法内部实例化此类。

Java本地内部类示例

public class localInner1{
 private int data=30;//instance variable
 void display(){
  class Local{
   void msg(){System.out.println(data);}
  }
  Local l=new Local();
  l.msg();
 }
 public static void main(String args[]){
  localInner1 obj=new localInner1();
  obj.display();
 }
}

立即测试

输出:

30

编译器生成的内部类

在这种情况下, 编译器将创建一个名为Simple $ 1Local的类, 该类具有外部类的引用。

import java.io.PrintStream;
class localInner1$Local
{
    final localInner1 this$0;
    localInner1$Local()
    {   
        super();
        this$0 = Simple.this;
    }
    void msg()
    {
        System.out.println(localInner1.access$000(localInner1.this));
    }
}

规则:局部变量不能是私有的, 公共的或受保护的。

Java Local内部类的规则

1)本地内部类不能从方法外部调用。

2)局部内部类在JDK 1.7之前不能访问非最终局部变量。从JDK 1.8开始, 可以在局部内部类中访问非最终局部变量。

具有局部变量的局部内部类的示例

class localInner2{
 private int data=30;//instance variable
 void display(){
  int value=50;//local variable must be final till jdk 1.7 only
  class Local{
   void msg(){System.out.println(value);}
  }
  Local l=new Local();
  l.msg();
 }
 public static void main(String args[]){
  localInner2 obj=new localInner2();
  obj.display();
 }
}

立即测试

输出:

50
赞(0)
未经允许不得转载:srcmini » Java Local内部类

评论 抢沙发

评论前必须登录!