为什么不能在匿名内部类中创建新方法?
如果我有以下课程:
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