Java中的局部内部类指的是在方法、构造函数或代码块中定义的类。与之相对应的是成员内部类,成员内部类定义在类中,属于类的成员。局部内部类相对于成员内部类,具有以下特点:
- 局部内部类只在所在的方法、构造函数或代码块中有效,超出该范围就无法访问;
- 局部内部类可以访问所在方法、构造函数或代码块中定义的变量,但必须使用final修饰。
相对于嵌套类,局部内部类可以更灵活地处理一些复杂的逻辑,增加代码的可读性和可维护性。
示例一:在方法中定义局部内部类
public static void printMessage(String message) {
class MessagePrinter {
public void print() {
System.out.println(message);
}
}
new MessagePrinter().print();
}
public static void main(String[] args) {
printMessage("Hello world!");
}
上述代码中,printMessage
方法中定义了一个名为MessagePrinter
的局部内部类,该类中定义了打印字符串的方法print
。在main
方法中调用printMessage
方法,并向其传递字符串参数,最终输出了该字符串。
示例二:在代码块中定义局部内部类
public static void main(String[] args) {
int number = 10;
{
class NumberPrinter {
public void print() {
System.out.println(number);
}
}
new NumberPrinter().print();
}
}
上述代码中,在main
方法中定义一个整型变量number
,然后在代码块中定义了一个名为NumberPrinter
的局部内部类,该类中定义了打印整型变量的方法print
。在该代码块内部,创建了一个NumberPrinter
实例,并调用其print
方法,在控制台输出整型变量number
的值。由于该局部内部类只在该代码块中有效,所以无法在该代码块之外使用。同样,由于其访问的变量number
是在代码块内定义的,因此在代码块之外也无法访问。