【发布时间】:2018-10-24 20:04:30
【问题描述】:
我有 2 节课。一个包含一组不同类型水果的私有哈希映射(此类称为fruitStore),另一个是抽象类,在其字段中包含字符串的私有ArrayList(此类称为fruitNames)。
fruitStore 中 HashMap 的键是每个水果的名称,字段是水果的信息(价格和有效期等)。
目前,我的目标是将所有键(水果名称)放入fruitNames 的ArrayList 中。
到目前为止,我尝试的是在fruitStore 中创建另一个私有字符串数组,将其命名为名称,然后将所有名称存储在其中。之后我决定在fruitNames 类中创建一个函数来移动所有水果名称。
所以我在fruitNames中做了如下代码
//making an object of fruit_store
private fruitStore fruit_store = new fruitStore();
void insert_fruit(ArrayList<String> fruits){
for ( int i = 0; i < fruit_store.names.size(); i++ ){
//here i planned to add the elements in names to the fruitList array
}
}
但是,我有一个问题。由于 ArrayList 名称是私有的并且只能在 fruitStore 类中访问,因此我无法在任何其他类中使用它。我能想到的唯一解决方案是公开姓名,但有人告诉我不要这样做。
有人知道这个问题的解决方法吗?
【问题讨论】:
-
您可以简单地扩展抽象类并向新类添加一个方法,以便它可以访问数组列表。
-
最好提供改变数组列表而不直接暴露它的方法
-
请不要像小说一样描述你的代码。向我们展示代码。例如。而不是“在其字段中包含字符串的私有ArrayList的抽象类(这个类称为fruitNames)”向我们展示代码
abstract class fruitNames { private ArrayList<String> xxx; } -
为什么你的
fruitNames类需要是抽象的,为什么不应该公开名称列表,即你能详细说明“我被告知不要这样做”吗?这听起来像是你可以用一个简单的不可变和公共List来实现的东西(假设你的水果名称列表在编译时是已知的)。 -
它的抽象,因为它有子类 apple、orange、pear 等。
标签: java class arraylist abstract-class