有几个类(我无法编辑)实现一个接口,是否可以添加一个只调用接口中定义的方法的方法来实现该接口的每个类?
(不含java 8)
答案 0 :(得分:1)
不,我不相信。这样的方法必须在具体类中实现为一种真正的方法,但是如果不能访问类本身就不能这样做。
您可以创建每个子类,并且所有这些子类都可以使用新方法实现新接口。
答案 1 :(得分:1)
我不确定我是否能帮到你,但是如果A,B,C ......类实现了一个界面我就无法编辑A,B,C ......并希望添加一个你可以用一个新的子类扩展每个类,每个subA,subB,subC等都可以实现新的方法......
答案 2 :(得分:0)
我认为没有办法做你要求的事情,而不是不依赖于字节码操作。
也许AOP会有所帮助,你可以为界面的目标方法添加一个切点。
答案 3 :(得分:0)
如果您使用的是Java 8并且可以修改界面,那么是:
interface Face {
Object existing();
default Object additional() {
return "Hello " + existing() + "!";
}
}
否则,不,你不能。 Java目前没有Javascript原型,C#扩展方法等功能。
答案 4 :(得分:0)
只需编写一个接受接口类型的static
方法并调用方法:
interface Fooable
{
void foo();
}
public class FooableExtensions
{
public static void doSomethingToFooable( Fooable f /*, other parameters*/ )
{
f.foo();
}
}
它没有C#扩展方法提供的花哨的语法糖,但它应该可以解决这个问题。