重用增强的循环不同类类型

Dav*_*nes 0 java generics for-loop

我希望这不是重复,因为我找不到任何回答我正在寻找的东西.

我有一大堆代码在填充大型地图时重复.
不同代码块之间的唯一区别是循环的类.

例:

for (SomeClass class : SomeClassList) {
         // Repeated code here.
    }
for (AnotherClass aClass : AnotherClassList) {
         // Repeated code here.
    }
for (AndAnotherClass fClass : AndAnotherClassList) {
         // Repeated code here.
    } 
etc...
Run Code Online (Sandbox Code Playgroud)

所有这些类共享两种方法,getXYZ()setXYZ().我曾尝试使用泛型,但多种类型都失败了.我想创建一个方法,我可以传入不同类的不同列表,在不同的列表上执行相同的代码.

像这样的东西:

public void anyList(List<?> list){
   for(classOfList item: list){
      //code here
   }
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

如果它们是你的类,放入getXYZsetXYZ在接口中它们都实现(直接或从基类等),然后在增强for循环中使用接口作为类型.

interface HasXYZ {
    void setXYZ(XYZType xyz);
    XYZType getXYZ();
}

class SomeClass implements HasXYZ {
    // ...
}

class AnotherClass implements HasXYZ {
    // ...
}

class AndAnotherClass implements HasXYZ {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后你的anyList:

public void anyList(List<HasXYZ> list){
    for (HasXYZ item : list){
        // code here
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

anyList(someClassList);
anyList(anotherClassList);
anyList(andAnotherClassList);
Run Code Online (Sandbox Code Playgroud)