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)
如果它们是你的类,放入getXYZ并setXYZ在接口中它们都实现(直接或从基类等),然后在增强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)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |