数组列表中的Java对象

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

我想为我创建的每个对象自动运行更新功能。我在代码中需要更改什么,不幸的是它不起作用

如何在ArrayList中初始化对象?

:(

创建一个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;
    }
}

不调用更新功能

提问于
用户回答回答于
  1. ArrayListZeitansager必须型的Zuhoerer,而不是String
  2. 然后在你的循环中sagAn()你需要调用:
            abonnenten.get(i).update();

代替:

            abonnenten.update();
  1. 最后你的方法static void schreibeEin(String name),实际上应该Zuhoerer作为一个参数。
用户回答回答于

要在每次创建对象时运行“更新”功能,必须在构造函数中调用此函数。像这样:

Zuhoerer(String name) {
    this.name = name;
    update();
}

你想和你的arraylist做什么?给我更多细节,以便我可以帮助你。

扫码关注云+社区

领取腾讯云代金券