为什么不能在匿名内部类中创建新方法?

如果我有以下课程:

public class TestObject {

public String Hooray() {

return "Hooray!";

}

}

我显然可以实例化该对象,并且我知道必须进行某种子类化,因为我可以覆盖Hooray方法,但是如果有子类化,为什么我不能在匿名类内创建一个新方法?

TestObject a = new TestObject() {

public String Boo() {

return "Booooo";

}

};

System.out.println(a.Boo());

返回语法错误

回答:

您可以创建方法,方法没有任何问题Boo(除了它的前面有一个大写字母之外)。问题在于,在匿名类之外,Boo方法不可用(它没有作为类API的一部分公开)。

这与实现接口的任何类都是相同的…如果该类具有不属于接口的方法(甚至是公共方法),则需要将实例转换为特定的类才能访问这些方法。

不幸的是,因为这是一个匿名类,所以您不能将其强制转换(您不知道将其强制转换为什么)。

这些内部方法仍然有用,但是您必须从匿名类内部而不是外部调用它们。

以上是 为什么不能在匿名内部类中创建新方法? 的全部内容, 来源链接: utcz.com/qa/400579.html

回到顶部