在java observerable

时间:2018-03-17 19:17:37

标签: java arguments observable updates

我正在开发一个简单的客户端 - 服务器游戏,其中客户端一旦成功登录将通过其包含更新游戏所需的25个单词的数组通知其观察者。客户端正在发送正确的信息,但GUI中的更新方法不是。更新方法如下。

public void update(Observable o, Object arg) {
    if (arg[0].equals("true1")) {
        for(int i = 1; i <26; i++]){
           String [i] words = args[i]; // sets the words to the args 
       }

       player = new PlayerView(client, words); // creates new playerview taking the client and an array of words

       this.setContentPane(player); // sets player view to content pane
    }
}

当我尝试这个时,我收到以下错误:

  

表达式的类型必须是数组类型,但它已解析为Object

我已经尝试在if语句之前强制转换args,但这似乎不起作用

1 个答案:

答案 0 :(得分:0)

这样做:

  • 检查arg实际上是一个字符串数组(String [])
  • 将其转换为Strings数组
  • words声明为大小为25的数组(如果我能正确理解您的算法)
  • 将索引1到25从arg数组复制到单词array

这应该有效

public void update(Observable o, Object arg) {
    // check that it is indeed an array
    if(arg instanceof String[]) {
        // cast it into an array
        String[] argArray = (String[]) arg;

        // make your words array
        String[] words = new String[25];
        if (argArray[0].equals("true1")) {
            for(int i=1; i<26; i++) {
                words[i-1] = argArray[i]; 
            }

            player = new PlayerView(client, words); // creates new playerview taking the client and an array of words

            this.setContentPane(player); // sets player view to content pane
        }
    }
}