2010-10-20 46 views
3

我有interface IA,interface IB extends IAclass A implements IAJava:从现有的实现接口的匿名类作为子类?

现在我想创建一个匿名类,它从A延伸并实现IB

那将是怎样的?我想过这样的事情:

new A() implements IB { /* ... */ } 

(Error: Type mismatch: cannot convert from A to IB) 

或:

new IB() extends A { /* ... */ } 

(Error: Syntax error on token(s), misplaced construct(s)) 

或者是不可能创造这样的事情作为一个匿名类?

+0

它是如何工作的?你遇到了什么错误? – hvgotcodes 2010-10-20 14:05:12

+0

我认为你的设计是错误的。类A已经提供了IA的功能,并且你希望它也实现了扩展IA的IB? A类应该只是实施IB – Cratylus 2010-10-20 14:23:00

+0

A类不应该(也不能也不能)实施IB(因为它不一定是抽象的)。 – Albert 2010-10-20 14:32:32

回答

4

我想你可以创建一个抽象的,命名的内部类,它将这两者结合起来,并将它扩展到你的匿名类。

private static abstract class AB extends A implements IB {}; 
    ... 
    new AB() {}; 

有点笨拙,但我不认为你可以同时实现。