匿名类
匿名类可以让你的代码更简洁,可以同时声明并实例化一个类。匿名类就像一个没有名称的本地类。如果有一个本地类只使用一次,那么就可以用到匿名类
声明匿名类
本地类定义是类声明,匿名类是在表达式中定义。在下面的例子中,在本地变量spanishGreet的初始化语句中使用到匿名类,在本地变量的初始化中使用了本地类。(初始化和初始化语句的区别可以自己看代码理解)
class HelloWorldAnonymousClass { interface HelloWorld{ public void greet(); } public void sayHello(){ class EnglishGreeting implements HelloWorld{ @Override public void greet() { System.out.println("hello"); } } HelloWorld englishGreet = new EnglishGreeting(); HelloWorld spanishGreet = new HelloWorld() { @Override public void greet() { System.out.println("hola"); } }; englishGreet.greet(); spanishGreet.greet(); } }
匿名类语法
正如前面提到的,匿名类是一个表达式。除了有一个类定义在一个代码块中之外,匿名类的语法就像调用一个构造函数一样。
匿名类表达式包含以下几个部分:
1.new 关键词
2.要实现的接口或要继承的类的名称,在这个例子中就是接口HelloWorld
3.一个包含构造函数参数的括号,就像一个一般类的实例化创建表达式那样。如果是实现一个接口的话,那就没有构造函数,所以直接使用空括号
4.一个类定义实体
由于匿名类定义是一个表达式,那它就必须是语句的一部分。上面例子中,匿名类表达式就是spanishGreet变量初始化语句的一部分。(这也说明为什么在最后要跟个封号)
匿名类使用规则
就像本地类一样,匿名类可以获得外部作用域的本地变量
1.匿名类可以获得外部类的成员
2.匿名类不能获得外部作用域中不是final或实际final的本地变量
3.就像内嵌类一样,在匿名类中声明的类型(比如变量)会遮蔽外部作用相同名称的声明
匿名类关于它的成员,也有跟本地类一样的限制条件
1.不能在匿名类中声明静态初始化或成员接口
2.一种例外就是静态成员时常量变量时
可以在匿名类中声明以下内容:
1.属性
2.不在继承父类或接口中存在的额外的方法
3.实例初始化
4.本地类
但是不能再匿名类中声明一个构造函数
匿名类的原理
跟本地类一样,不过就是通过编译器给一个class名称罢了
相关推荐
详细对比测试了匿名类/内部类/本地类之间的区别,有例子+博客对比说明,希望对大家有所帮助
简单的讲述匿名类的特点,帮助大家区分和使用
java 成员内部类使用 内部匿名类 方法参数匿名类 方法匿名类
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
在那些修改中,引人注目的是内部类和匿名类。如运用得当,它们可使程序更易理解和维护。本文介绍内部类和匿名类在Java代码中是如何具体工作的,如何正确使用它们,以及如何避免一些常见的错误。 下面来看看这些特性...
Java中的内部类和匿名类!
在Java中,匿名类是一种没有显式声明名称的类。它常用于在创建对象时直接定义类的实现或重写类的方法。 使用匿名类可以简化代码,特别是在需要实现接口或继承抽象类的情况下。
内部类和匿名类总结 写的比较详细,=有需要的可以看下
接口对象 调用exPrint方法 实现接口的匿名类,完成exPrint方法 填写 exPrint方法体的输出语句
这是我自己写的第一个小程序,希望共享给大家
Java 1.1通过对Java语言规范进行...在那些修改中,最引人注目的就是内部类和匿名类。如运用得当,它们可使程序更易理解和维护。本文来看看这些特性具体是如何工作的,如何正确使用它们,以及如何避免一些常见的错误。
List最全总结( ArrayList, LinkedList, 匿名类)
JAVA匿名类创建对象.doc
Java匿名类的分析和理解
c#csharp.net【ConfigAuto】Unity编辑器下通过配置匿名类,自动生成C#类并填充数据,省去序列化和反序列化的消耗。以前是不能热更,不往这方面想,能热更了为啥lua能当配置表C#就不行.zip
Lambda表达式 取代了匿名类 ,取消了模板,允许用函数式风格编写代码。 由于最近接触了RxJava,遇到了Lambda,立马就喜欢上了~所以就学习了一下. 本文主要介绍一下Lambda在Android中替代匿名类的部分使用场景. 在...
主要介绍了Kotlin 匿名类实现接口和抽象类的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
传统的方式下,我们需要定义和JSON对象同步的C#类并实例化成对象以遍操作,这里提供了一个直接使用匿名类的方式,相较于传统方式可以少定义一些类,操作更加简便。 开发环境 实现步骤 1.创建工程:控制台程序,命名...
java中的匿名内部类总结
主要介绍了java 中使用匿名类直接new接口详解及实例代码的相关资料,需要的朋友可以参考下