【问题标题】:What is this in java? Attaching methods "on the fly"?这在java中是什么? “即时”附加方法?
【发布时间】:2011-07-02 22:57:00
【问题描述】:

我今天看到了这样的东西:

    frame.addWindowListener(new WindowAdapter() {

        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });

下面的部分是什么意思?

new AClass(){ this part }

我可以“扩展”并内联创建此类的新实例吗?

我试过google,但不知道叫什么=/

PS:学习java =p

【问题讨论】:

标签: java anonymous-inner-class


【解决方案1】:

它被称为“匿名类”...它是一种实现接口或扩展现有类(通常是抽象的“适配器”或“帮助器”类)的简写方式,无需费心为其命名。

你经常在 Swing 代码中看到它...实现窗口和鼠标侦听器。

这看起来(从表面上看)像是对该主题的一个体面的讨论:http://www.javaworld.com/javaworld/javaqa/2000-03/02-qa-innerclass.html

干杯。基思。

【讨论】:

    【解决方案2】:

    为了补充波西米亚的答案,这和做这样的事情是一样的

    class MyWindowAdapter extends WindowAdapter() {
    
            @Overide 
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
    }
    

    frame.addWindowListener(new MyWindowAdapter());
    

    【讨论】:

      【解决方案3】:

      它只是一个匿名内部类,当您只打算使用该接口实现一次时它很有用,它可能非常有用,否则您必须为此创建一个完整的类。

      【讨论】:

      • 实际上,您在这样做时正在创建一个“整个班级”。你只是在做内联。
      【解决方案4】:

      它被称为 anonymous 类。

      【讨论】:

        猜你喜欢
        • 2015-08-04
        • 2016-04-04
        • 1970-01-01
        • 2015-06-13
        • 2015-04-23
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 1970-01-01
        相关资源
        最近更新 更多