2010-10-20 81 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() {}; 

有點笨拙,但我不認爲你可以同時實現。