java 局部内部类
JAVA 内部 局部
2023-09-27 14:23:51 时间
可以在代码块里创建内部类,典型的方法是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是可以访问当前代码块的常量,以及此外围类的所有成员,下面分别对局部内部类和匿名内部类进行了比较
//: innerclasses/LocalInnerClass.java // Holds a sequence of Objects. package object; import static net.util.Print.*; interface Counter { int next(); } public class LocalInnerClass { private int count = 0; Counter getCounter(final String name) { // A local inner class: class LocalCounter implements Counter { //局部内部类 public LocalCounter() { // Local inner class can have a constructor print("LocalCounter()"); } public int next() { printnb(name); // Access local final return count++; } } return new LocalCounter(); } // The same thing with an anonymous inner class: Counter getCounter2(final String name) { return new Counter() { //匿名内部类 // Anonymous inner class cannot have a named // constructor, only an instance initializer: { print("Counter()"); } public int next() { printnb(name); // Access local final return count++; } }; } public static void main(String[] args) { LocalInnerClass lic = new LocalInnerClass(); Counter c1 = lic.getCounter("Local inner "), c2 = lic.getCounter2("Anonymous inner "); for(int i = 0; i < 5; i++) print(c1.next()); for(int i = 0; i < 5; i++) print(c2.next()); } } /* Output: LocalCounter() Counter() Local inner 0 Local inner 1 Local inner 2 Local inner 3 Local inner 4 Anonymous inner 5 Anonymous inner 6 Anonymous inner 7 Anonymous inner 8 Anonymous inner 9 *///:~
局部内部类和匿名内部类都实现了这个功能, 它么具有相同的行为和能力,既然局部内部类的名字在方法外是不可见的,那为什么还要使用基本内部类呢,唯一的理由是我们需要一个已命名的构造器,或需要重构构造器,而匿名构造器只能用于实例初始化
另外一个理由是,我们需要不止一个该内部类的对象
相关文章
- Java 8 新特性-菜鸟教程 (1) -Java 8 Lambda 表达式
- Java进阶:线程池、局部变量、内部类、静态嵌套类和引用,哦,还有一个坑
- java中的内部类内部接口详解
- Java 内部类、Lambda表达式
- JAVA在编写内部类时No enclosing instance of type XXX is accessible. Must qualify原因及解决
- Java进阶:线程池、局部变量、内部类、静态嵌套类和引用,哦,还有一个坑
- [转]JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
- Java 成员内部类 静态内部类
- Java语言基础学习从零开始(第四节----程序流程控制)
- java.lang.IllegalArgumentException: Invalid character found in method name
- Java非静态内部类中为什么不能有静态变量却可以有常量?
- 第十节:详细讲解一下Java多线程,随机文件
- Java注解详细
- Java中静态变量/成员变量、静态内部类/成员内部类小节
- Java在方法作用域内创建的内部类(也称为:嵌套类 或 内部类 或 局部类)
- Java内部类
- java判断是否为空字符串
- 你不知道的java对象序列化的秘密
- java Long的iniValue出错
- Java学习---下载文件并且对文件编码
- Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目
- Java内部类(成员,局部,匿名,静态,多重继承)
- 华为OD机试 -寻找身高相近的小朋友(Java) | 机试题+算法思路+考点+代码解析 【2023】
- JAVA学习:成员内部类基本概念及用法
- Java核心类库:内部类那点事儿
- JAVA学习第三十三课(经常使用对象API) —迭代器
- java面向对象编程——多态和内部类
- JAVA开发者的Golang快速指南
- Java小白入门200例93之Java内部类--静态内部类
- Java笔记8:Hibernate连接Oracle
- JDK与Java SE/EE/ME的区别