向实现接口的所有类添加一个方法
答
不,我不这么认为。这种方法必须在具体的类中作为一种真正的方法来实现,但是如果不能访问这些类,你就不能这样做。
您可以为每个子类创建子类,并且所有这些子类都可以使用新方法实现您的新接口。
答
我不认为有办法做你在问什么,而不是诉诸于字节码操纵。
也许AOP会有所帮助,您可以在界面的目标方法中添加一个点。
答
我不确定如果我找不到你,但如果类A,B,C ......实现了一个接口I并且你不能编辑A,B,C ......并且想要添加一个方法你propably可能只是延长每一类有一个新的子类,每个舒伯,subB的,subC的等能实现新的方法...
答
如果您使用的是Java 8,可以修改界面,那么是:
interface Face {
Object existing();
default Object additional() {
return "Hello " + existing() + "!";
}
}
否则,不,你不能。 Java在这个时候没有像Javascript原型,C#扩展方法等功能。
答
只写一个static
方法,它采用的接口类型,并调用方法:
interface Fooable
{
void foo();
}
public class FooableExtensions
{
public static void doSomethingToFooable(Fooable f /*, other parameters*/)
{
f.foo();
}
}
它没有花哨的语法糖是C#扩展方法提供,但它应该做的伎俩。