【发布时间】:2021-10-19 00:24:27
【问题描述】:
我想将命令存储在 HashMap 中,但即使我创建了存储 HashMap 的对象的实例,我也无法从我的 main 访问它。
interface Command{
void execute(String[] args);
}
public class Register {
private ArrayList<Obj> reg = new ArrayList<Obj>();
private HashMap<String, Command> commands = new HashMap<String, Command>();
protected void add(String[] cmd) {
if(cmd.length>=4) {
reg.add(new Obj(cmd[1]);
}
}
public static void main(String args[]){
Register a = new Register();
Scanner read = new Scanner(System.in);
a.commands.put("add", Register::add);
while(true) {
String line = read.nextLine();
String cmd[] = line.split(" ");
a.commands.get(cmd[0]).execute(cmd);
}
read.close();
}
}
我正在使用一个名为 register 的类来存储对象,我想通过控制台通过添加一些函数来访问它的函数,比如“add abc”使用构造函数 Obj(“abc”) 存储一个对象,但我无法将命令添加到哈希图中,因为我无法通过 main 访问它。
【问题讨论】:
-
错误是什么?
-
您正试图从静态方法访问非静态的东西。