-1

私はこのような抽象クラスを持っています

public abstract class Command {
    public abstract void execute(String keyWord[]);
    String keyWord;
    public Command(String keyWord) {
        this.keyWord = keyWord;
    }
}

そしてそれを次のように管理するクラス:

public class CommandManager {

    private static List<Command> commands = new ArrayList<>();


    public static void append(Command command) {
        commands.add(command);
    }

    static {

    }

    public static void load() {
        append(new Command("lol") {

            @Override
            public void execute(Player player, String[] keyWord) {
                System.out.println("hi");
            }
        });
    }

    public boolean handle() {
        String cmd[] = input.split(" ");
        Command command = commands.get(cmd[0].toLowerCase()); //this
        if (command != null) {
            command.execute(player, cmd);
            return true;
        }
        return false;
    }

}

私が得るエラーは、私のコメントがある場所です。get メソッドを使用して Command クラスから文字列を取得するにはどうすればよいですか? ありがとう

4

4 に答える 4

2

int問題は、get()メソッドがリストのインデックスを表すを期待していることです。

于 2012-06-22T05:23:29.997 に答える
0

一致するキーワードを持つコマンドが必要だと思うので、これを試してください。

Command command = null;
for (Command c : commands) {
    if (c.keyWord.equalsIgnoreCase(cmd[0])) {
        command = c;
        break;
    }
}

// command will not either be null or be the Command whose keyword matches


psJavaとOOPのチュートリアルにはgoolgingをお勧めします。

于 2012-06-22T05:26:27.007 に答える
0

getメソッドを使用してCommandクラスから文字列を取得するにはどうすればよいですか?

もっとも単純な 簡単な方法はkeyWordCommandクラス内のgetterメソッドを作成してから作成することです。

commands.get(index).getKeyWord(); //this will return the string

これは、リストindex内のコマンドクラスインデックスを示す整数変数です。そして、nullをチェックすることを忘れないでください。Getメソッドは次のようになります

public String getKeyWord() {
    return this.keyWord;
}
于 2012-06-22T05:22:21.080 に答える
0

コマンドはでArrayListあり、get()関数はintパラメータを受け取ります。

コードに数字を使用するか、を使用Map<String,Command>します。

于 2012-06-22T05:22:58.413 に答える