java中的匿名类除了还有两种有趣的用法
/**
* TODO Comment of AnonymousTest
*
* @author aotian.zhuw
*/
class EntryInterface {
public void print() {
System.out.println("hello world");
}
}
public class AnonymousTest {
private EntryInterface a;
public void setA(EntryInterface a) {
this.a = a;
}
public void print() {
a.print();
}
public static void main(String[] args) {
AnonymousTest test = new AnonymousTest();
test.setA(new EntryInterface() {
public void print() {
System.out.println("test success.");
}
});
test.print();
}
}
首先看上面的代码我们在setA中传入的是一个匿名类
编译之后得到三个文件EntryInterface.class AnonymousTest.class AnonymousTest$1.class
反编译AnonymousTest$1.class文件,得到的结果如下
package cn.zw;
import java.io.PrintStream;
// Referenced classes of package cn.zw:
// EntryInterface, AnonymousTest
static class AnonymousTest$1 extends EntryInterface
{
public void print()
{
System.out.println("test success.");
}
AnonymousTest$1()
{
}
}
结果我们发现,java的编译器自动创建了一个EntryInterface的子类,
名为AnonymousTest$1,且该类覆盖了父类的print()方法。
修改AnonymousTest类
interface EntryInterface {
public void print();
}
public class AnonymousTest {
private EntryInterface a;
public void setA(EntryInterface a) {
this.a = a;
}
public void print() {
a.print();
}
public static void main(String[] args) {
AnonymousTest test = new AnonymousTest();
test.setA(new EntryInterface() {
public void print() {
System.out.println("test success.");
}
});
test.print();
}
}
编译之后仍旧得到三个文件EntryInterface.class AnonymousTest.class AnonymousTest$1.class
反编译AnonymousTest$1.class文件,得到的结果如下
import java.io.PrintStream;
// Referenced classes of package cn.zw:
// EntryInterface, AnonymousTest
static class AnonymousTest$1
implements EntryInterface
{
public void print()
{
System.out.println("test success.");
}
AnonymousTest$1()
{
}
}
这次我们发现编译器创建的AnonymousTest$1类实现了EntryInterface接口,很有趣。
分享到:
相关推荐
掌握java四中匿名内部类
java 代码实现的网络新闻文本自动分类,采用朴素贝叶斯和支持向量机两种方法实现!
java中的匿名内部类总结
java 成员内部类使用 内部匿名类 方法参数匿名类 方法匿名类
java 匿名内部类的使用规范 java 匿名内部类的使用规范 java 匿名内部类的使用规范
16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名...
Java中的内部类和匿名类!
本文介绍内部类和匿名类在Java代码中是如何具体工作的,如何正确使用它们,以及如何避免一些常见的错误。 下面来看看这些特性具体是如何工作的? 1、非静态内部类 如果内部类没有指定static修饰符,拥有对...
这段代码实现了一个简单的线程池ExecutorService,其中使用了Java的匿名内部类。在类的构造方法中,首先创建了一个固定大小为5的线程池。然后通过循环提交了10个任务到线程池中执行。每个任务都是一个匿名内部类实现...
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
本文主要介绍了Java中匿名类的两种实现方式。具有很好的参考价值,下面跟着小编一起来看下吧
Java 1.1通过对Java语言规范进行...在那些修改中,最引人注目的就是内部类和匿名类。如运用得当,它们可使程序更易理解和维护。本文来看看这些特性具体是如何工作的,如何正确使用它们,以及如何避免一些常见的错误。
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
接口对象 调用exPrint方法 实现接口的匿名类,完成exPrint方法 填写 exPrint方法体的输出语句
在Java中,匿名类是一种没有显式声明名称的类。它常用于在创建对象时直接定义类的实现或重写类的方法。 使用匿名类可以简化代码,特别是在需要实现接口或继承抽象类的情况下。
Java特别篇--匿名对象与匿名内部类
java数百种算法实现
使用swift匿名内部类,实现jave匿名内部类功能,java中的匿名内部类,可以做到的是,就是想要重写一个类中的方法,并且执行,但是不想重新定义一个类,因为只调用一次,或者调用多次,但是每次调用的实现过程都不同,这时候就...
10.java基础拾遗--匿名内部类的应用--实现scala中的集合map方法.mp4
用Java实现的23种设计模式,完整的代码,本想无积分下载来着,后来一想还是设置点儿把,毕竟我不喜欢不劳而获的思想,希望每个TX在下载别人的资源的同时,也积极上传资源与他人一起分享!