快速做法"很多"?

时间:2014-09-26 19:58:19

标签: java

让我们说我们有一个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不容易添加像上面的伪代码这样的函数,但有没有一种黑客或巧妙的方式来重现这种行为?

1 个答案:

答案 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-您可以提供一个实现类似接口的匿名类。