Java 使用list-get方法获取字符串

Java 使用list-get方法获取字符串,java,list,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

我有一个这样的抽象类

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;
    }

}
公共类命令管理器{
private static List commands=new ArrayList();
公共静态void append(命令){
命令。添加(命令);
}
静止的{
}
公共静空荷载(){
追加(新命令(“lol”){
@凌驾
public void execute(Player,String[]关键字){
System.out.println(“hi”);
}
});
}
公共布尔句柄(){
字符串cmd[]=input.split(“”);
Command=commands.get(cmd[0].toLowerCase());//这个
if(命令!=null){
命令。执行(玩家,指令);
返回true;
}
返回false;
}
}
我得到的错误是我的评论在哪里。如何使用get方法从命令类获取字符串? 谢谢

如何使用get方法从命令中获取字符串 上课

最简单的方法是在
命令
类中创建
关键字
的getter方法,然后

commands.get(index).getKeyWord(); //this will return the string
这里的
index
是一个整数变量,表示列表中的命令类索引。别忘了检查null。Get方法类似于

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

Commands是一个
ArrayList
,而
get()
函数接受一个
int
参数

在代码中使用数字或映射。

问题在于get()方法需要一个表示列表索引的
int


我想您需要具有匹配关键字的命令,因此请尝试以下操作:

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


p、 我推荐谷歌学习java和OOP教程。

我想这是java?如果是这样,您应该这样标记它。提供有关错误的详细信息。您需要从命令类中公开字符串,例如使用getter,一个类似string getKeyword(){return keyword;}的方法,然后执行命令。getKeyword();我认为
load
方法中的
execute
方法不是override方法。正如您看到的那样,
execute
只有一个参数
String[]keyWord
,当您重写时,您声明了两个参数
Player-Player,String[]keyWord
。关于上面的代码,我想问你一些问题:1。
String cmd[]
的内容是什么?我们可以看到基于已拆分的
输入的内容,但我不知道
输入的内容是什么。2.使用
get(int index)
为什么
get
方法的输入是String?最简单的方法是公开关键字。没有人会推荐这种方法——我当然不推荐——但它比getter更简单。@CarlManaster我想这会更简单,但不是一种好的编码实践。一般来说,人们避免这样做。所以我们把getter作为一种更简单更好的方法来实现它:pI以前使用了一个map,只是想尝试一种不同的方法。