我创建了这个大班,作为我完成作业的项目的一部分 该类包含数据成员以及一些方法,现在我需要创建另一个(几乎)相同的类。 它几乎完全相同,因为唯一的区别是代码中出现的常数。
例如,如果原始类具有:
for (int i=0; i<8; i++) {
for (int j=0; j<8; j++) {
labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
labels[i][j].setImage(empty);
}
}
新班级应该:
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
labels[i][j].setImage(empty);
}
}
如果原始类有:
labels=new Label[8][8];
新班级应该:
labels=new Label[10][10];
意味着唯一的区别是10而不是8,在代码中多次。
我可以在哪里重复使用代码?
有没有人有一些想法?
答案 0 :(得分:5)
只需使用类属性:
public class MyClass {
private final int labelsSize;
private final Label[][] labels;
public MyClass(final int labelsSize) {
this.labelsSize = labelsSize;
this.labels = new Label[labelsSize][labelsSize];
}
// ...
for (int i=0; i<labelsSize; i++) {
for (int j=0; j<labelsSize; j++) {
labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
labels[i][j].setImage(empty);
}
}
}
答案 1 :(得分:2)
您可以传入该数字(8或10)作为此方法的参数,或作为构造函数的参数传递。然后将其设置为实例变量并在此代码中访问它。