我必须为可观察者和观察者创建代码。每个观察者都有自己的更新"你已经知道的方法。
在我的可观察代码中,我使用了" notifyObservers"方法。它的参数是一个字符串数组,包含关于我的项目的信息(命令编号,汉堡名称,饮料名称等)。
我的观察者的更新方法仍然存在错误,我不知道它来自哪里。它的两个参数是observable和包含我已经指定的信息的字符串数组。
这是我的代码
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]似乎无法识别。
如果有人可以在这里帮助我,那就太酷了。 谢谢 ! (抱歉我的英语很差,我是法国人)
答案 0 :(得分:0)
您的错误来自您对labels
的定义。只需将其更改为
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]);
}
并确保您的labels
确实已初始化。因为如果(arg1 instanceof String[])
是false
,那么您将获得NullPointerException
答案 1 :(得分:0)
您在if语句中声明了labels
变量,这意味着它的范围仅限于if
块。如果您需要访问它,您应该在外面声明它,如下所示:
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[]) {
labels = (String[]) arg1;
}
else {
System.out.println("Type de message inconnu");
}
int num = Integer.parseInt(labels[0]);
}