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,只是想尝试一种不同的方法。