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是这个匿名类的父类,就是一个父类的引用引用了一个子类的对象实例,这个对象只需要创建一次