【发布时间】:2013-01-22 00:00:54
【问题描述】:
好的,所以我创建了一个名为 Food 的对象,它具有描述食物的各种属性(蛋白质(以克为单位)、卡路里、碳水化合物等)。然后我创建了一个名为Foodlist 的类,它读取一个excel 表,为电子表格的每一行创建一个新的Food 对象(用该行列中的信息填充对象); Foodlist 类然后创建一个 ArrayList 的 Food 对象。
我现在想创建一个ProteinList,它是FoodList 的子列表,并且有一种方法可以将所有高蛋白食物分成一个数组。 Proteinlist 扩展 Foodlist,如何访问列表中 Food 对象的“蛋白质”属性?
这是我的代码卡住的地方:
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;
}
【问题讨论】:
-
protein在Food中是如何定义的?可公开访问的字段,还是只能通过 getter/setter 访问? -
我把它们都放在一个包里。如果我要使用 getter 方法,我将如何访问它? foodlist.get(i).getProtein() 并将其存储在局部变量中?
-
如果Food有getter,你可以做
foodList.get(i).getProtein()假设getProtein()是getter方法。 -
为什么不在你的食物列表类中放置一个方法,能够返回高蛋白食物的子集?
-
谢谢,我现在就试试 :),我还没有这样做,因为我对语法感到困惑。我有另一个类使用了几个“。”一行中的方法访问器并不断收到有关“不安全方法”的奇怪编译器错误