本文翻译自:How are Anonymous inner classes used in Java?

What is the use of anonymous classes in Java? Java中匿名类的用途是什么? Can we say that usage of anonymous class is one of the advantages of Java? 我们可以说使用匿名类是Java的优势之一吗?


#1楼

参考:https://stackoom.com/question/1UOV/Java中如何使用匿名内部类


#2楼

GuideLines for Anonymous Class. 匿名类准则。

  1. Anonymous class is declared and initialized simultaneously. 匿名类被同时声明和初始化。

  2. Anonymous class must extend or implement to one and only one class or interface resp. 匿名类必须扩展或实现为一个或唯一一个类或接口。

  3. As anonymouse class has no name, it can be used only once. 由于匿名类没有名称,因此只能使用一次。

eg: 例如:

button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub}
});

#3楼

One of the major usage of anonymous classes in class-finalization which called finalizer guardian . 匿名类在类最终确定中的主要用法之一称为finalizer Guardian In Java world using the finalize methods should be avoided until you really need them. 在Java世界中,应避免使用finalize方法,直到您真正需要它们为止。 You have to remember, when you override the finalize method for sub-classes, you should always invoke super.finalize() as well, because the finalize method of super class won't invoke automatically and you can have trouble with memory leaks. 您必须记住,当为子类覆盖finalize方法时,您也应该始终调用super.finalize() ,因为超类的finalize方法不会自动调用,并且您可能会遇到内存泄漏的麻烦。

so considering the fact mentioned above, you can just use the anonymous classes like: 因此,考虑到上述事实,您可以只使用匿名类,例如:

public class HeavyClass{private final Object finalizerGuardian = new Object() {@Overrideprotected void finalize() throws Throwable{//Finalize outer HeavyClass object}};
}

Using this technique you relieved yourself and your other developers to call super.finalize() on each sub-class of the HeavyClass which needs finalize method. 使用此技术,您和其他开发人员都HeavyClass在需要finalize方法的HeavyClass每个子类上调用super.finalize()


#4楼

new Thread() {public void run() {try {Thread.sleep(300);} catch (InterruptedException e) {System.out.println("Exception message: " + e.getMessage());System.out.println("Exception cause: " + e.getCause());}}}.start();

This is also one of the example for anonymous inner type using thread 这也是使用线程匿名内部类型的示例之一


#5楼

i use anonymous objects for calling new Threads.. 我使用匿名对象调用新线程。

new Thread(new Runnable() {public void run() {// you code}
}).start();

#6楼

Anonymous inner class can be beneficial while giving different implementations for different objects. 匿名内部类在为不同对象提供不同实现时可能会有所帮助。 But should be used very sparingly as it creates problem for program readability. 但是应谨慎使用,因为这会给程序的可读性带来问题。

Java中如何使用匿名内部类?相关推荐

  1. java中带参数匿名内部类_Java内部类之匿名内部类

    我们都知道Java中可以使用内部类,将一个类的定义放在另一个类的定义的内部,这就是内部类,但是匿名内部类往往使我们摸不着头脑,因为它并没有特定的名称,那么该如何使用它呢? 定义一个匿名内部类 publ ...

  2. java中带参数匿名内部类_Java中的匿名内部类

    一.匿名内部类 之前的所有类都有自己的名字,但是有时候如果某个接口的实现类(或者某个父类的子类)只需要使用一次,此时这样的类如果我们单独定义出来则需要单独为其创建一个"*.java" ...

  3. 11.浅析Java中的final关键字

    Java中,在匿名内部类的时候可能会经常用到final关键字.Java中的string类就是一个final类.final关键字可以用来修饰类,方法和变量(包括成员变量和局部变量) 1.修饰类 当用fi ...

  4. java中匿名内部类详解_java 中匿名内部类的实例详解

    搜索热词 java 中匿名内部类的实例详解 原来的面貌: class TT extends Test{ void show() { System.out.println(s+"~~~哈哈&q ...

  5. java中的匿名内部类

    匿名内部类在java编码中不是很常见,它可一让类实现多继承的特性(多个父类~1个子类) java中的匿名内部类总结 http://www.cnblogs.com/nerxious/archive/20 ...

  6. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

    final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...

  7. java中一个引人深思的匿名内部类

    前两天去面试javaweb问到一个问题,在你的项目中有没有用到线程,我特么的一想,这东西不是在c层面的吗,所以说我不了解线程..... 后来回去想啊想啊,我操这特么的不是再问我事物的控制,消息队列的回 ...

  8. JAVA中的匿名类、内部类和匿名内部类

    在看<java核心技术卷I>的时候再TreeSet的章节,看到了使用匿名内部类的实例,好奇后查了下相关信息,有两个博客写的很好,以后还需细看 java匿名内部类 CSDNjava匿名内部类 ...

  9. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

最新文章

  1. 自动驾驶中的车道线跟踪技术
  2. android:layout_gravity=end,Android中 layout_gravity和gravity的区别
  3. 前端开发技巧-那些不常见但十分有效的小玩意
  4. ITK:在图像中查找连接的组件
  5. 教你怎么在vi和vim上查找字符串
  6. 崩坏西游html5多游游戏,崩坏西游无限元宝版
  7. java 数据库连接池
  8. Java中JDBC连接数据库详解
  9. .net byte转java byte_Java Web安全 || Java基础 Java Agent
  10. 嘉和生物-B确定发行价每股24.00港元 公开发售获认购1247.52倍
  11. 真狠!10000mAh超大电池手机发布,真的神机...
  12. 通用版程序在the new iPad与Xcode4.3中的不兼容。
  13. 统计文件大小与文件行数
  14. 嵌入式系统——软件测试工程
  15. mysql中varbinary、binary、char、varchar异同
  16. vb写数据到mysql数据库_VB2010写入数据到access 2003数据库
  17. 【python】Anaconda3环境安装
  18. 不上网电脑安装python_离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)...
  19. 为Go语言GC正名-20秒到100微妙的演变史
  20. 机器学习-----聚类kmeans肘部图、轮廓图的绘制、以及聚类和聚类中心散点图的绘制

热门文章

  1. Hibernate 多对多关系实现
  2. git push 冲突
  3. 流媒体视频质量评价(单刺激连续质量评价方法)
  4. 【rqnoj】 1 明明的随机数
  5. 天津检验检疫局完成核心业务容灾备份系统建设
  6. 关于线段树or 树状树状 在二维平面搞事情!Orz
  7. [WPF自定义控件库] 自定义控件的代码如何与ControlTemplate交互
  8. 头条 msra几道面试题
  9. JQuery弹出菜单时禁止页面(body)滚动
  10. 读《那些年,那些事 一个程序猿的奋斗史》 一点自己的感触