一个scjp的问题,本人小菜,搞不懂!(在线等……)
1. interface TestA { String toString(); }
2. public class Test {
3. public static void main(String[] args) {
4. System.out.println(new TestA() {
5. public String toString() { return “test”; }
6. });
7. }
8. }
What is the result?
A. test
B. null
C. An exception is thrown at runtime.
D. Compilation fails because of an error in line 1.
E. Compilation fails because of an error in line 4.
F. Compilation fails because of an error in line 5.
Answer: A
疑惑:为什么 TestA可以 用 new 啊,不是说接口不可以new的吗?
[解决办法]
new ANotFinalClass() {
public String toString() { return “test”; }
}
匿名子类
[解决办法]
new TestA() {
public String toString() { return “test”; }
}
implementents TestA接口的匿名内部类 的一个实例。编译器会生成一个名称类似Test$1的类
[解决办法]