【发布时间】:2015-04-03 19:56:21
【问题描述】:
我在看this example,想知道第一行是做什么的:
private SiteStreamsListener listener = new SiteStreamsListener() {
看起来您可以以这种方式声明其他方法或覆盖方法。例如,我可以执行以下操作吗?
ArrayList myList = new ArrayList() {
@Override String toString()
{
<my code here>
}
<insert new methods here>
}
【问题讨论】:
-
即使您可以插入新方法,也只有来自
ArrayList的方法是可见的,因为这是对象被声明为的内容 -
这些大括号是干什么用的,看this post
-
是接口或抽象类的匿名内部类定义。
-
@RohitJain 我的问题不能简单地由编译器回答,因为编译器不会告诉我大括号的实际功能,只会告诉我代码是否可以编译。我一直在寻找一个答案,比如我接受的那个,它给出了这个实例的术语,以便我可以了解实际发生的事情。总的来说,我觉得从编译器中跳出来的问题通常会由于缺乏理解和实际学习而导致问题:许多学生都会遇到这个问题。
-
@Teofrostus 我说的是你问题的第二部分(这是否可行),而不是第一部分(我在其中链接了一个副本我的第二条评论,只要你看得清楚)。
标签: java