假设我有这样一个类:
class ASDF {
int a;
int b;
int c;
}
ASDF[] myArray;
以及一些大小的 ASDF 数组。有什么方法可以编写一个函数,它接受 ASDF 成员的名称和 ASDF 的数组,并对给定成员名称的所有成员求和?
即,我想要一个像这样工作的函数:
sumMember(myArray, a);
将返回 ASDF 中所有“a”成员变量的总和。虽然成员变量多于三个,因此为每个成员变量分配一个函数是不现实的。
最佳答案
您可以使用反射或贴图或...
或者,如果您可以使用 Java 8,则可以传递一个 lambda 以指向您感兴趣的成员。它没有您想要的那么短,但也不错:
public static int sumMembers(ASDF[] array, ToIntFunction<ASDF> member) {
return Arrays.stream(array).mapToInt(member).sum();
}
示例使用:
public static void main(String[] args) {
ASDF[] array = {new ASDF(), new ASDF()};
array[0].a = 1;
array[1].a = 2;
//THIS IS HOW YOU CALL IT
int sum = sumMembers(array, a -> a.a);
}
关于java - 通过参数名称引用成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24210850/