我有一个像这样的抽象类
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? 感谢
答案 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)
命令是ArrayList
,get()
函数接收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的教程。