2014-11-06 51 views

回答

1

不,我不這麼認爲。這種方法必須在具體的類中作爲一種真正的方法來實現,但是如果不能訪問這些類,你就不能這樣做。

您可以爲每個子類創建子類,並且所有這些子類都可以使用新方法實現您的新接口。

0

我不認爲有辦法做你在問什麼,而不是訴諸於字節碼操縱。

也許AOP會有所幫助,您可以在界面的目標方法中添加一個點。

1

我不確定如果我找不到你,但如果類A,B,C ......實現了一個接口I並且你不能編輯A,B,C ......並且想要添加一個方法你propably可能只是延長每一類有一個新的子類,每個舒伯,subB的,subC的等能實現新的方法...

0

如果您使用的是Java 8,可以修改界面,那麼是:

interface Face { 
    Object existing(); 

    default Object additional() { 
     return "Hello " + existing() + "!"; 
    } 
} 

否則,不,你不能。 Java在這個時候沒有像Javascript原型,C#擴展方法等功能。

0

只寫一個static方法,它採用的接口類型,並調用方法:

interface Fooable 
{ 
    void foo(); 
} 


public class FooableExtensions 
{ 
    public static void doSomethingToFooable(Fooable f /*, other parameters*/) 
    { 
     f.foo(); 
    } 
} 

它沒有花哨的語法糖是C#擴展方法提供,但它應該做的伎倆。

相關問題