我想将类属性的“相对”引用作为参数传递。
首先,我不知道“相对引用”实际上是否是正确的名称,但我想到的是这样的:
public ArrayList<Integer> getAllPropertyValues(someObjectClass.someInteger) { //someObjectClass.someInteger being the "relative reference"
ArrayList<Integer> temp = new ArrayList<>();
for (someObject x : someObjectList) {
temp.add(x.someInteger);
}
}
这个想法是传递对(例如)Human.Age
的引用,并且该方法会将每个 x.Age
添加到列表中。
换句话说,给定一个对象x
,如果我传递属性y
,我就能够调用someDataType receiveProperty = x.y
。无论x
是什么类型的对象,或者y
是什么类型。
有没有办法在Java中做到这一点?
最佳答案
我认为您可以使用接受 SomeObjectClass 并返回 int
的 ToIntFunction
。
public ArrayList<Integer> getAllPropertyValues(ToIntFunction<SomeObjectClass> function) {
ArrayList<Integer> temp = new ArrayList<>();
for (someObject x : someObjectList) {
temp.add(function.apply(x));
}
}
你可以调用它:
ArrayList<Integer> results = getAllPropertyValues(SomeObjectClass::getAge);
您可以传递 getAge()
或任何返回 int
的 SomeObjectClass
方法。
关于java - "Relative"类属性引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49435844/