就在今天,我需要一种在不同对象之间传递函数的方法.我很快就知道你不能直接用Java做到这一点,但是你可以传递一个显然被称为"匿名内部类"的wht实例,如下所示:
要定义类:
interface MyCallback {
public int execute(int i1, int i2);
}
Run Code Online (Sandbox Code Playgroud)
要创建它的实例:
MyCallback callback = new MyCallback() {
public int execute(int i1, int i2) {
return i1 + i2;
}
};
Run Code Online (Sandbox Code Playgroud)
并称之为:
int sum = callback.execute(1, 2); // Sets sum to 3.
Run Code Online (Sandbox Code Playgroud)
很简单.但我不明白为什么它被称为"匿名".我不是只给它起名字MyCallback吗?一个被命名的东西不能匿名,对吗?请帮助我摆脱对这个术语的困惑.
Sot*_*lis 10
Java编译器自动从类实例创建表达式派生匿名类声明.
MyCallback是超类型的名称.您的匿名子类没有在编译时对开发人员有用的名称.
实际的类将有一个名称,类似于MyCallback$1,但您将无法在源代码中使用它.例如,你做不到
MyCallback$1 anonymousClassInstance = ...;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |