我正在使用Java,我有这个层次结构
class Seq
class For extends Seq
interface SeqIt
Class ForIt implements SeqIt
ForIt
有一个构造函数:public ForIt( For x ) //takes For objects
直到现在一切正常。
现在我想创建一个名为FU
的新类,它可以访问我创建的任何ForIt
个对象。
此FU
类必须具有此签名public static int sum1(For MyFor)
的方法
例如,如果ForIt对象内部有一个名为myArr的数组。这个方法sum1应该返回MyFor对象
如何创建此课程FU
?
答案 0 :(得分:0)
我能想到的两种方式是:
ForIt
课程时,请将其添加到FU
课程中 - 完成后,请调用总和方法ForIt
类构造函数调用FU
类的静态方法,让它知道创建了新的ForIt
我个人会使用选项1,因为它可以避免使用静态变量。选项2适用于简单的用例。
//not thread safe
class FU {
private final List<ForIt> list = new ArrayList<> ();
private int sum = 0;
void add(ForIt fi) {
list.add(fi);
sum += fi.getValue();
}
int sum() {
return sum;
}
}
选项1非常简单(创建一个FU
对象,每次创建ForIt
实例时,都将其添加到FU
对象。)
选项2:
class ForIt {
private static final FU fu = new FU();
ForIt() {
fu.add(this);
}
static int sum() {
return fu.sum();
}
}
public static void main(String... args) {
new ForIt();
new ForIt();
System.out.println(ForIt.sum());
}
答案 1 :(得分:-1)
根据您的描述,您可以将ForIt作为FU类中的实例变量,如下所示:
public class FU {
public ForIt forit; // Now you have access to ForIt object
public static int sum1(For MyFor) {
// Iterate array in ForIt instance
FU fu = new FU();
for (int something: fu.forit.myArr){
...........
}
........
}
}