Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;相对的;类属性引用_Java_List_Class_Parameters - Fatal编程技术网

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));
    }
 }