[英]What do curly braces after a 'new' statement do?
我在看这个例子,想知道第一行做了什么:
private SiteStreamsListener listener = new SiteStreamsListener() {
看起来您可以以这种方式声明其他方法或覆盖方法。 例如,我可以执行以下操作吗?
ArrayList myList = new ArrayList() {
@Override String toString()
{
<my code here>
}
<insert new methods here>
}
这些花括号定义了一个匿名内部类。
这使您能够覆盖您正在启动的类的public
和protected
方法。 您可以对任何非final
类执行此操作,但对抽象类和接口最有用,它们只能以这种方式启动。
(为了限定最后一句话,可以使用 Java 8 中的 lambda 语句启动只有一个非default
方法的接口,绕过这种设计方法。)
ArrayList myList = new ArrayList() {
@Override
String toString()
{
//<my code here>
}
//<insert new methods here>
}
是的,你可以这样做。 您可以大胆地覆盖公共、受保护的方法。 虽然您可以添加新方法,但无法通过 ArrayList 类的 myList 实例访问这些方法。
有关更多详细信息,请参阅 java 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.