使用list get方法获取字符串

时间:2012-06-22 05:18:18

标签: java list

我有一个像这样的抽象类

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类中获取String? 感谢

4 个答案:

答案 0 :(得分:2)

问题是get()方法需要int表示列表的索引。

答案 1 :(得分:0)

  

如何使用get方法从Command中获取String   类?

最简单的 一种简单的方法是在keyWord类中创建Command的getter方法然后

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

此处index是一个整数变量,表示列表中的命令类索引。并且不要忘记检查null。获取方法类似于

public String getKeyWord() {
    return this.keyWord;
}

答案 2 :(得分:0)

命令是ArrayListget()函数接收int参数。

Eithor使用数字或使用Map<String,Command>代码。

答案 3 :(得分: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


附:我建议goolging有关java和OOP的教程。