【问题标题】:Adding to an ArrayList from another class从另一个类添加到 ArrayList
【发布时间】:2021-12-20 15:01:25
【问题描述】:

我有两节课。 Museum 和 Painting。 Painting 类按预期工作,但我遇到了 Museum 类的问题。 我们被要求创建一个方法签名,该签名将 addPainting(String, String) 具有两个参数 Artist 和 Location,并将新的 Painting 添加到博物馆绘画收藏中。

当我尝试编译代码时,没有找到合适的匹配方法?

有人知道我在这里缺少什么吗?

public class Museum  {
    //creating the fields
    private ArrayList<Painting> paintings;
    private String name;

    /**
     * Create a Museum Class 
     */
    public Museum(String aMuseum) {
        paintings = new ArrayList<>();
        name = aMuseum;
    }

    /**
    * Add a painting from the Paintings class
    */
    public void addPainting(String artist, String location) {
        paintings.add(artist, location);
    }
}

【问题讨论】:

  • paintings::add 采用 Painting 类型的单个参数,而不是 Strings 类型的两个参数。
  • 您遗漏了许多关键概念,而不是立即修复此代码,我建议您先阅读泛型 (docs.oracle.com/javase/tutorial/java/generics/index.html),然后阅读 ArrayList
  • 你想添加一个新的Painting;所以,应该是paintings.add(new Painting(artist, location));

标签: java class arraylist add


【解决方案1】:

您应该创建一个新的Painting 对象,然后将其添加到绘画列表中。

而不是

paintings.add(artist, location);

你应该这样做:

Painting p = new Painting(artist, location);
paintings.add(p);

当然,您还应该实现Painting 构造函数(在Painting 类中)。

【讨论】:

  • 谢谢。这使我可以将绘画直接添加到Musuem 数组列表中。我遇到的挑战是当我向绘画类添加一个新对象时,它应该存储在博物馆数组列表中。我可能是错的,但我认为我需要以某种方式从 Paintings 类中调用一个方法来检索这些信息?
  • 如果你想从 Museum 类中使用这个列表,你应该有一个“getter”方法,以便你可以 getPaintings() 并迭代列表的对象。
猜你喜欢
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多