2014-11-06 91 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#扩展方法提供,但它应该做的伎俩。

相关问题