我必须将这个重复和重复的代码概括为单一方法吗?
//attrrischio
SagTblObjAttrischioang sagTblObjAttrischioang = elemtOut.getAttrischio();
if(sagTblObjAttrischioang.length()>0)
{
for (int j = 0; j <sagTblObjAttrischioang.length(); j++) {
SagObjAttrischioang item = sagTblObjAttrischioang.getElement(j);
System.out.println(ToStringEntities.toString(item));
}
}
// beni
SagTblObjBeniang sagTblObjBeniang = elemtOut.getBeni();
if(sagTblObjBeniang.length()>0)
{
for (int j = 0; j <sagTblObjBeniang.length(); j++) {
SagObjBeniang item = sagTblObjBeniang.getElement(j);
System.out.println(ToStringEntities.toString(item));
}
}
一遍又一遍
答案 0 :(得分:2)
如果两个循环中所需的所有行为都是打印每个项目的toString(),那么这样的方法就足够了:
public void printItems(Iterator<Object> items){
while(items.hasNext()){
Object item = items.next();
System.out.println(item.toString());
}
}
您可以覆盖所有实体的toString
方法,以您需要的格式打印。
答案 1 :(得分:1)
SagTblObjAttrischioang
和SagTblObjBeniang
都实现了一个公共接口(例如SagTabObj
并实现length
和getElement
之类的方法来返回另一个common interface SabTab
。
然后创建一个像
这样的常用方法public void printItems(SabTabObj item){
if(item.length()>0)
{
for (int j = 0; j < item.length(); j++) {
SagTab sabTab = item.getElement(j);
System.out.println(ToStringEntities.toString(sabTab));
}
}
}
答案 2 :(得分:0)
我看到您的SagObjAttrischioang
和SagTblObjBeniang
(无论可能是什么?)类都支持getElement(int)
方法。
如果它们都不是从抽象类继承或实现接口,那么您应该重构这些类的代码。
然后,您可以将elemtOut
重构为此抽象类或接口的集合,这将使迭代更容易。
你为什么不发布你正在使用的课程代码?我认为你的课程设计需要一些改进。
答案 3 :(得分:0)
如果你想要覆盖数组和Iterable(这是你问题的接口......因为你需要通过它们)。使用类似的东西:
import java.util.Arrays;
[...]
public static void printAll(Object[] stuff) {
printAll(Arrays.asList(stuff));
}
public static void printAll(Iterable<?> stuff) {
for (Object o : stuff) {
System.out.println(o);
}
}
您需要两个函数,因为Java中的数组是特殊类型的对象。 “foreach”循环将处理集合为空的情况(顺便说一下,循环的正常情况,检查长度&gt; 0只保存int声明)。
如果对象不是基本类型之一(byte,char,short,int,long,float,double和boolean),则println()上会自动调用object.toString(),因此无需使用它自己在代码中(使代码尽可能短)。
答案 4 :(得分:0)
我想到两个解决方案:
SagObjAttrischioang
和SagTblObjBeniang
仅实施lenght()
和getElement(int)
,为什么不使用List呢? (甚至收藏)。答案 5 :(得分:-1)
如何将其封装在:
public void myMethod()
{
... your code...
}
然后循环:
while (true)
myMethod();
应该这样做:)