我被告知的内容激发了我对这个话题的好奇:
Java gui 类可以实现数百个侦听器和回调,并且许多书籍教您在 gui 类中实现所有这些接口。或者,这些方面可以在内部类中实现,因此侦听器调用的方法不会混淆。
我想知道如何在 ActionScript 中执行此操作,它没有内部类,但有私有类。但是,我认为我没有完全意识到内部类的含义,所以我只是想了解一下我将使用它们按用途来组织类方法的情况。
如果可能的话,请展示一个示例,说明这在 ActionScript 中的外观,否则在 Java 中的外观。
在java中它看起来像这样:
new JButton().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// code that will be performed on any action on this component
}
};
here ActionListener
- 是一个接口,并且通过调用new ActionListener() {/*interfaces method implementations goes here*/};
您正在创建匿名类(匿名是因为它没有名称) - 该接口的实现。
或者你可以像这样创建内部类:
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// code that will be performed on any action on this component
}
};
然后像这样使用它:
new JButton().addActionListener(new MyActionListener());
此外,您可以将侦听器声明为顶级或静态内部类。但有时使用匿名内部类非常有用,因为它允许您几乎在声明侦听器正在侦听的操作的组件的同一位置实现侦听器。显然,如果侦听器方法代码很长,这不是一个好主意。那么最好将其移动到非匿名内部类或静态嵌套类或顶级类中。
一般来说,内部类是非静态类,它们以某种方式驻留在顶级类的主体内。您可以在此处查看 Java 中的示例:
//File TopClass.java
class TopClass {
class InnerClass {
}
static class StaticNestedClass {
}
interface Fooable {
}
public void foo() {
new Fooable(){}; //anonymous class
class LocalClass {
}
}
public static void main(String... args) {
new TopClass();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)