Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 在对象的arraylist中获取对象的属性_Java_Oop_Arraylist - Fatal编程技术网

Java 在对象的arraylist中获取对象的属性

Java 在对象的arraylist中获取对象的属性,java,oop,arraylist,Java,Oop,Arraylist,好的,我制作了一个名为食物的对象,它具有描述食物的各种属性(蛋白质(克)、卡路里、碳水化合物等)。然后,我创建了一个名为Foodlist的类,该类读取excel表格,为电子表格的每一行创建一个新的Food对象(用该行列中的信息填充该对象);然后,Foodlist类创建食物对象的ArrayList。 我现在想制作一个ProteinList,它是FoodList的子列表,并且有一种方法可以将所有高蛋白食物分离成一个数组Proteinlist扩展了Foodlist,如何访问列表中食品对象的“prote

好的,我制作了一个名为
食物
的对象,它具有描述食物的各种属性(蛋白质(克)、卡路里、碳水化合物等)。然后,我创建了一个名为
Foodlist
的类,该类读取excel表格,为电子表格的每一行创建一个新的
Food
对象(用该行列中的信息填充该对象);然后,
Foodlist
类创建食物对象的
ArrayList
。 我现在想制作一个
ProteinList
,它是
FoodList
的子列表,并且有一种方法可以将所有高蛋白食物分离成一个数组
Proteinlist
扩展了
Foodlist
,如何访问列表中食品对象的“protein”属性

下面是我的代码被卡住的地方:

    public Food[] groupProtein() {
        for(int i = 0; i < foodList.size(); i++)
        {
            if(foodList.get(i).protein > 6){//HERE IS THE PROBLEM, trying to get the property of the food object at i
                proteinFoods.add(foodList.get(i));
            }
        }

        Food[] temp = new Food[proteinFoods.size()];
        for (int i = 0; i < temp.length; i++) {
            temp[i] = proteinFoods.get(i);
        }

        return temp;
    }
public Food[]groupProtein(){
对于(int i=0;i6){//问题是,试图在i处获取食物对象的属性
proteinFoods.add(foodList.get(i));
}
}
食品[]温度=新食品[proteinFoods.size()];
对于(int i=0;i

这就是您想要的吗?

如果在类定义中将属性
protein
定义为
private
,您将无法从类外的任何方法访问它。您需要在类中定义一个getter方法:

public class Food {
    ...
    public int getProtein() {
        return protein;
    }
    ....
}
foodList.get(i).getProtein()
因此,您可以从类外的方法读取值:

public class Food {
    ...
    public int getProtein() {
        return protein;
    }
    ....
}
foodList.get(i).getProtein()

我假设
foodList
已正确定义,因此
get(I)
方法将返回
Food
对象(或它要返回的任何类)

如果您的
protein
属性有一个getter,那么您的方法可以是:

public Food[] groupProtein() {
    for(Food food : foodList)
    {
        if(food.getProtein() > 6){
            proteinFoods.add(food);
        }
    }

    return proteinFoods.toArray(new Food[0]);
}

我想
proteinFoods
是一个
列表
。。。对吗?

食品
中如何定义
蛋白质
?公共可访问字段,还是仅通过getter/setter访问?我将它们都放在一个包中。如果我使用getter方法,我将如何访问它?foodlist.get(i).getProtein()并将其存储在局部变量中?如果食物有getter,可以执行
foodlist.get(i).getProtein()
假设
getProtein()
是getter方法。为什么不在食物列表类中放置一个方法,能够返回高蛋白食物的子集?谢谢,我现在就试试:),我还没有这样做,因为我对语法感到困惑。我有另一个类,它在一行中使用了几个“.”方法访问器,并不断收到一个关于“不安全方法”的奇怪编译器错误。“蛋白质”不是一个对象,它是一个食物对象的int值属性。我不认为它可以这样返回^protein是
int
?还是
dobule
?或者什么?