-2

我的问题是:我创建了一个 Arraylist serviceList

service1 和 service2 都是来自 2 个类的 2 个独立对象,但它们具有相同的“执行”方法:

public Service1 service1;
public Service2 service2;

/*Then I add element to Arraylist:*/
serviceList.add(0, service1);
serviceList.add(1, service2);

/*then how can I run "excute" method of service1 and service2?
something like this:*/
for(Object service: serviceList){
    service.execute();
}

我尝试使用 ArrayList< Class> 但它是死路一条。谢谢你的回答:D

4

2 回答 2

3

介绍一个接口:

interface Service {
  void execute();
}

class Service1 implements Service { ... }
class Service2 implements Service { ... }

List<Service> serviceList = ...

for (Service service: serviceList) {
  service.execute();
}
于 2021-12-29T08:53:46.833 回答
0

首先,ArrayList<T> 只能接受声明的类型 T,因此您不能将不同类型的对象(例如 K)添加到同一个 ArrayList 中。

解决方案 1
您需要的解决方案可能是声明ArrayList<Object> list然后添加这两个服务。

解决方案2
现在,因为你想要一个通用的execute方法,你Service1Service2类实现一些接口是很自然的,比如为每个类Service实现一个唯一的方法实现。execute您可以将 ArrayList 声明为ArrayList<Service> list

于 2021-12-29T08:53:19.763 回答