我必须为可观察对象和观察者创建代码。正如您所知,每个观察者都有自己的“更新”方法。
在我的可观察代码中,我使用了“notifyObservers”方法。它的参数是一个字符串数组,其中包含有关我的项目的信息(命令号、汉堡包名称、饮料名称等)。
我的观察者中的更新方法仍然有错误,我不知道它来自哪里。它的两个参数是可观察的和包含我已经指定的信息的字符串数组。
这是我的代码
public void update(Observable arg0, Object arg1)
{
if (!(arg0 instanceof BDCommande))
System.out.println("Objet émetteur inconnu\n");
if (arg1 instanceof String[]) {
String[] labels = new String[5];
labels = (String[]) arg1;
}
else
System.out.println("Type de message inconnu");
int num = Integer.parseInt(labels[0]);
}
该方法的最后一行检测到错误,标签[0]似乎无法识别。
如果有人能在这里帮助我,那就太好了。 谢谢 ! (抱歉我的英语不好,我是法国人)
最佳答案
您的错误来自您对标签
的定义。只需将其更改为
public void update(Observable arg0, Object arg1)
{
String[] labels = new String[5];
if (!(arg0 instanceof BDCommande))
System.out.println("Objet émetteur inconnu\n");
if (arg1 instanceof String[]) {
// String[] labels = new String[5];
labels = (String[]) arg1;
}
else
System.out.println("Type de message inconnu");
int num = Integer.parseInt(labels[0]);
}
还要确保您的标签
确实已初始化。因为如果 (arg1 instanceof String[])
为 false
,那么您将得到一个 NullPointerException
关于Java 观察者/可观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410048/