小编典典

为什么将其称为“匿名”内部类?

java

就在今天,我需要一种在不同对象之间传递函数的方法。我很快了解到您不能直接在Java中做到这一点,但是您可以传递一个wht实例,该实例显然被称为“匿名内部类”,如下所示:

定义类:

interface MyCallback {
    public int execute(int i1, int i2);
}

使其成为一个实例:

MyCallback callback = new MyCallback() {
    public int execute(int i1, int i2) {
        return i1 + i2;
    }
};

并称之为:

int sum = callback.execute(1, 2);  // Sets sum to 3.

很简单。但是我不明白的是为什么它被称为“匿名”。我不只是给它起名字MyCallback吗?命名的东西不能匿名,对吗?请避免对这个术语感到困惑。


阅读 258

收藏
2020-11-26

共1个答案

小编典典

不,您说的是MyCallback()接口的实例。会使用您提供的方法逻辑为实现该接口的类提供动态名称,而该名称并不是您可以真正确定或使用的名称…因此,就您的源代码而言,它确实是匿名的。

(通常,该名称是通过在封闭类的名称末尾附加一个数字后缀来构造的,但是您无法知道将使用哪个后缀,并且不知道该名称对于该词的大多数用法是足够匿名的)

2020-11-26