我有2个不同的接口KafkaMetricsReporter
实现,将其命名为implementation1
和implementation2
。每个实现都有start
方法,它开始很少的线程。
从另一个类我必须实例化implementation1
和implementation2
,然后运行每个类的start
方法。虽然我可以在给定的类中逐个执行,但是有更简洁的方法来执行此操作,以便将来如果我必须添加一个更多的实现,那么这样做会更容易。
请给我一些指示。
更正:KafkaMetricsReporter
是一个界面
答案 0 :(得分:5)
这是你在找什么?不确定我是否理解Q.
KafkaMetricsReporter[] kmrs = new KafkaMetricsReporter[]{
new implementation1(),
new implementation2()
};
for( KafkaMetricsReporter kmr: kmrs ){
kmr.start();
}
答案 1 :(得分:2)
有一种更清洁和传统的方式。那是Programming with Interfaces。
使用start()
方法创建一个接口,让其他两个类实现它。
修改强> 如果它是一个接口,你几乎需要一个小代码。将所有引用放在List / Array / Any容器中。
只需循环播放
for( KafkaMetricsReporter kmr : yourListorArray){
kmr.start();
}
该调用的所有实例都是启动方法。
答案 2 :(得分:0)
在客户端代码中,您可以直接引用该接口。例如:
public class Impl1 implements KafkaMetricsReporter {
//...
}
public class Impl2 implements KafkaMetricsReporter {
}
class Client {
public method() {
KafkaMetricsReporter reporter1 = new Impl1();
KafkaMetricsReporter reporter2 = new Impl2();
reporter1.start();
reporter2.start();
}
}