У меня есть три класса: Лабрадоры, Питомники и Шоу. Питомник содержит частный ArrayList Лабрадоров. Как показано:
Лабрадоры. java:
public class Labradors {
private String name;
private String description;
public Labradors(String n, String d) {
name = n;
description = d;
}
public String getName() {
return name;
}
}
Питомник. java:
import java.util.ArrayList;
public class Kennel{
private ArrayList<Labradors> labs;
public Kennel() {
labs = new ArrayList<Labradors>();
}
public void addDog(Labradors l) {
labs.add(l);
}
}
и
Показать. java
class Show
{
public static void main(String args[])
{
Labradors Dave = new Labradors("Dave", "Good dog!");
Labradors Bob = new Labradors("Bob", "Likes tummy rubs!");
Kennel niceHome = new Kennel();
niceHome.addDog(Dave);
niceHome.addDog(Bob);
for (Labradors lab: niceHome.labs ) {
System.out.println(lab.getName());
}
}
}
Мой для каждого l oop в Show дает мне следующую ошибку:
Show.java:12: error: labs has private access in Kennel
for (Labradors lab: niceHome.labs ) {
^
1 error
Ясно, что одним из решений было бы сделать ArrayList опубликованным c, но Мое понимание инкапсуляции заключается в том, что наилучшая практика означает, что она должна быть частной и написана на геттере. Но как мне это сделать?
Я чувствую, что ответ должен быть действительно простым, но мне трудно отследить его ...
NB - я использую openjdk версии 11.0 .6 в Ubuntu 19.10.