【发布时间】:2013-11-25 13:07:20
【问题描述】:
我在 oracle 文档中看到的匿名类示例的以下示例。但是他们如何在类 HelloWorldAnonymousClasses 中编写接口 HelloWorld
public class HelloWorldAnonymousClasses {
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
public void sayHello() {
class EnglishGreeting implements HelloWorld {
String name = "world";
public void greet() {
greetSomeone("world");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}
HelloWorld englishGreeting = new EnglishGreeting();
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
HelloWorld spanishGreeting = new HelloWorld() {
String name = "mundo";
public void greet() {
greetSomeone("mundo");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hola, " + name);
}
};
englishGreeting.greet();
frenchGreeting.greetSomeone("Fred");
spanishGreeting.greet();
}
public static void main(String... args) {
HelloWorldAnonymousClasses myApp =
new HelloWorldAnonymousClasses();
myApp.sayHello();
}
}
【问题讨论】:
-
为什么你认为这应该是一个问题?接口只是类的一个成员。跟匿名类没关系?
-
@RohitJain:他可能指的是这一行
HelloWorld frenchGreeting = new HelloWorld() -
@JeroenVannevel 我不认为他是那个意思。我重新阅读了这个问题,但我没有发现它会导致那个问题。显然是在问 - 他们如何编写接口
HelloWorldinside 类HelloWorldAnonymousClasses -
@RohitJain:嗯,我倾向于同意你的观点。无论哪种方式,我都会在我的回复中澄清它(我认为匿名接口实现在这里会引起混淆,而不是那样)。
标签: java