Java 初始化几个实现相同接口的不同类
我有几个实现接口的不同类,如下所示:Java 初始化几个实现相同接口的不同类,java,class,oop,Java,Class,Oop,我有几个实现接口的不同类,如下所示: public class Class1 implements interface1 { @Override public void action(){ //do somethod } } public class Class2 implements interface1 { @Override public void action(){ //do somethod } }
public class Class1 implements interface1 {
@Override
public void action(){
//do somethod
}
}
public class Class2 implements interface1 {
@Override
public void action(){
//do somethod
}
}
public class Class3 implements interface1 {
@Override
public void action(){
//do somethod
}
}
我的问题是,当我初始化这些类时,如何为循环中的每个类调用action方法。我想把它们存储在一个列表中,然后浏览一下并给它们打电话,但我做不到 当您有实现特定接口的不同类时,您可以用多态方式处理它们 首先,让我们根据java代码约定更改代码:
public interface Interface {
void action();
}
public class ClassOne implements Interface {
@Override
public void action(){
System.out.println("class one action");
}
}
public class ClassTwo implements Interface {
@Override
public void action(){
System.out.println("class two action");
}
}
public class ClassThree implements Interface {
@Override
public void action(){
System.out.println("class three action");
}
}
之后,创建列表并向其中添加新实例,并为列表中的每个元素调用方法action()
,您不需要知道列表中实际显示了什么类实例,只需要知道它们都实现了某些接口
List<Interface> list = new ArrayList<>();
list.add(new ClassOne());
list.add(new ClassTwo());
list.add(new ClassThree());
for(Interface instance : list) {
instance.action();
}
另外,您甚至可以使用Java8/9在一行中编写此代码
爪哇8
爪哇9
一个列表应该可以完成这项工作,我在想,这是一个好方法,还是创建一个父类更好?它很有效,所以保持简单,不要创建无用的父类。另请参见@Avtontom\在您的简单示例中,创建父类并不会真正产生影响。只需使用包含您所需方法的第一个公共父级将是最好的解决方案。得到它,感谢你们两位。
class one action
class two action
class three action
Arrays.asList(new ClassOne(), new ClassTwo(), new ClassThree()).forEach(System.out::println);
List.of(new ClassOne(), new ClassTwo(), new ClassThree()).forEach(System.out::println);