当前位置: 代码迷 >> J2SE >> 生手:为什么说匿名类没有名字呢
  详细解决方案

生手:为什么说匿名类没有名字呢

热度:51   发布时间:2016-04-23 19:37:11.0
新手:为什么说匿名类没有名字呢?
public class TestAnonymousClass {
public Player getPlayer() {
return new Player() {
void say() {
System.out.println("I am a player...");
}
};
}

public static void main(String[] args) {
TestAnonymousClass tac = new TestAnonymousClass();
Player p = tac.getPlayer();
p.say();
}
}

class Player {
void say() {}
}


输出是:I am a player...

各位坛友,我一直对于这个匿名内部类有个疑问,网上查资料都说匿名类没有名字,
但是比如上面这个程序,“Player ”不就是它的名字么?
各种匿名类代码new后面跟的不就是它的名字吗?求解答
------解决思路----------------------
匿名指的是子类的名字被匿了
本来应该是先定义一个子类
class NBplayer extends Player的
然后再 return 一个NBplyaer的实例
但是这里因为只需要一次,要不要去定义都无所谓
就直接省了
这就是匿名的意思
------解决思路----------------------
如果只需要创建一个对象,可以用匿名内部类,Player是这个匿名类的父类,就是一个父类的引用引用了一个子类的对象实例,这个对象只需要创建一次
  相关解决方案