我想为我创建的每个对象自动运行更新功能。我必须在代码中做些什么更改,很遗憾,它不起作用
如何初始化ArrayList中的对象?
:(
创建一个数组列表并使用名称初始化
public class Main {
public static void main(String... args) {
Zuhoerer Maria = new Zuhoerer("Maria");
Zuhoerer Sepp = new Zuhoerer("Sepp");
Zeitansager.sagAn();
}
}
class Zuhoerer {
private String name;
private String Ansager;
Zuhoerer(String name) {
this.name = name;
}
private void setAnsager(String datumstring) {
Ansager = datumstring;
}
void update() {
setAnsager(Zeitansager.getZeit());
Zeitansager.schreibeEin(name);
System.out.println(name + " hat gerade die die Zeitansage gehört:
[Datum/Uhrzeit]: " + Ansager);
Zeitansager.trageAus(name);
}
}
class Zeitansager {
private static String datumString;
private static ArrayList<String> abonnenten;
Zeitansager(String datumString) {
Zeitansager.datumString = datumString;
abonnenten = new ArrayList<>();
}
static void schreibeEin(String name) {
abonnenten.add(name);
}
static void trageAus(String name) {
abonnenten.remove(name);
}
static void sagAn() {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.YYYY' 'HH:mm:ss");
String datum = sdf.format(new Date());
datumString = datum;
for (int i=1; i <= abonnenten.size(); i++) {
abonnenten.update();
}
}
static String getZeit() {
return datumString;
}
}
未调用更新功能
答案 0 :(得分:4)
您在ArrayList
中的Zeitansager
必须是Zuhoerer
类型,而不是String
。
然后在sagAn()
的循环中您需要调用:
abonnenten.get(i).update();
代替:
abonnenten.update();
static void schreibeEin(String name)
实际上应该以{{1}}作为参数。答案 1 :(得分:1)
要在每次创建对象时运行“更新”函数,必须在构造函数中调用此函数。像这样:
Zuhoerer(String name) {
this.name = name;
update();
}
您打算如何处理您的数组列表?给我更多详细信息,以便我可以帮助您。