Java &引用;相对的;类属性引用
我想传递一个类属性的“相对”引用作为参数 首先,我不知道“相对参照”是否是这个词的真正名称,但我想的是大致如下:Java &引用;相对的;类属性引用,java,list,class,parameters,Java,List,Class,Parameters,我想传递一个类属性的“相对”引用作为参数 首先,我不知道“相对参照”是否是这个词的真正名称,但我想的是大致如下: public ArrayList<Integer> getAllPropertyValues(someObjectClass.someInteger) { //someObjectClass.someInteger being the "relative reference" ArrayList<Integer> temp = new ArrayLis
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);
}
}
public ArrayList getAllPropertyValue(someObjectClass.someInteger){//someObjectClass.someInteger是“相对引用”
ArrayList temp=新的ArrayList();
对于(someObject x:someObjectList){
温度相加(x.someInteger);
}
}
其想法是传递一个对(例如)Human.Age
的引用,该方法将每个x.Age
添加到列表中
换句话说,给定一个对象x
,如果我传递属性y
,我将能够调用someDataType receivedproperty=x.y
。哪种类型的对象是x
或什么类型的对象是y
在Java中有这样做的方法吗?我认为可以使用
ToIntFunction
来接受SomeObjectClass并返回int
public ArrayList<Integer> getAllPropertyValues(ToIntFunction<SomeObjectClass> function) {
ArrayList<Integer> temp = new ArrayList<>();
for (someObject x : someObjectList) {
temp.add(function.apply(x));
}
}
publicArrayList GetAllPropertyValue(ToIntFunction函数){
ArrayList temp=新的ArrayList();
对于(someObject x:someObjectList){
临时添加(函数应用(x));
}
}
你可以调用它:
ArrayList<Integer> results = getAllPropertyValues(SomeObjectClass::getAge);
ArrayList results=GetAllPropertyValue(SomeObjectClass::getAge);
您可以传递
getAge()
或任何返回int
的SomeObjectClass
方法,只是要澄清一下,您希望此方法将Human
的每个实例的Age
属性添加到列表中吗?让我编辑问题,并使其更清楚这实际上就是我要寻找的!我将检查如何在通用方法上执行此操作!使用ToIntFunction
而不仅仅是函数
,将T
作为方法的泛型类型参数是没有意义的,因为您将int
存储在ArrayList
中,从而装箱整数。@Federico Peralta Schafne您是对的。我承认,出于同样的原因,我曾犹豫过。但我最终还是保持了这种状态,因为它让我觉得它更具可读性。事实上并非如此?Alex Coronas和@Federico Peralta Schaffner我将用一种通用的方式对返回的列表进行编辑。@davidxxx您不必编辑答案。这很清楚,也可以理解。
public ArrayList<Integer> getAllPropertyValues(ToIntFunction<SomeObjectClass> function) {
ArrayList<Integer> temp = new ArrayList<>();
for (someObject x : someObjectList) {
temp.add(function.apply(x));
}
}