让我们说我们有一个IMyInterface接口,它有一些方法。现在我想要一个实现IMyInterface的对象集合的类。
如果只有一种方法,我可以做一些像
这样的事情class ManyMyInterface{
List<IMyInterface> interfaces = new ArrayList<>();
void doSomething(){
for(IMyInterface i : interfaces){
i.doSomething();
}
}
}
但如果我有很多方法,这个过程就会变得单调乏味。有没有更快的方法,比如可调用,我可以做一些像
这样的事情foreach function in IMyInterface do
ManyMyInterface.class.addfunction(function.name, function.parameters,{
for(IMyInterface i : interfaces){
i.function();
}
});
我知道由于类加载器的行为方式,java不容易添加像上面的伪代码这样的函数,但有没有一种黑客或巧妙的方式来重现这种行为?
答案 0 :(得分:2)
使用Java 8,您可以使用Consumer<IMyInterface>
:
void apply(Consumer<IMyInterface> consumer) {
for(IMyInterface i : interfaces){
consumer.accept(i);
}
}
并使用以下方法调用方法:
apply(i -> i.doSomething());
或使用方法参考:
apply(IMyInterface::doSomething);
使用Java 7-您可以提供一个实现类似接口的匿名类。