gpt4 book ai didi

java - 通过参数名称引用成员?

转载 作者:行者123 更新时间:2023-11-29 10:13:48 25 4
gpt4 key购买 nike

假设我有这样一个类:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com