Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从抽象类的所有子类调用方法的最佳方式是什么?_Java_Foreach_Abstract Class - Fatal编程技术网

Java 从抽象类的所有子类调用方法的最佳方式是什么?

Java 从抽象类的所有子类调用方法的最佳方式是什么?,java,foreach,abstract-class,Java,Foreach,Abstract Class,我想对一系列不同的API服务进行API调用。我有一个名为ApiService的抽象类,它包含每个子类的通用方法。每个新API都必须继承和实现这些方法 我的问题是:如何遍历ApiService的所有子类并调用它们的方法 现在,我有一个已经实例化的所有服务的静态数组(这意味着必须手动将新服务添加到数组中),它看起来像这样: ApiService[] services = {new SubService1(), new SubService2(), ...}; 我想知道是否有更好的方法来实现这一点。

我想对一系列不同的API服务进行API调用。我有一个名为
ApiService
的抽象类,它包含每个子类的通用方法。每个新API都必须继承和实现这些方法

我的问题是:如何遍历
ApiService
的所有子类并调用它们的方法

现在,我有一个已经实例化的所有服务的静态数组(这意味着必须手动将新服务添加到数组中),它看起来像这样:

ApiService[] services = {new SubService1(), new SubService2(), ...};

我想知道是否有更好的方法来实现这一点。

您希望在抽象类的子类的每个实例上调用一个方法。无论如何,没有自动找到类的所有实例的方法,因此您需要自己管理所有实例的列表

您必须执行以下操作之一:

  • 手动管理列表,即在创建实例时将其添加到列表中
  • 通过将实例添加到基类
    ApiService
    的构造函数中的静态列表,使其更加自动化。但是它让基类知道它的实例列表,在我看来这有点代码味道

当您事先知道应用程序中的实例数时,还有另一种选择:使用枚举而不是抽象类。每个枚举值都是该类的一个实例,它可以实现接口和方法,每个实例可以不同地重写一个方法。

我认为此链接将非常有用。请检查一下。[问题][1][1]: