我是Java的新手,我正在尝试构建一个执行某些命令的简单cli。在验证部分,我需要在C中创建类似函数指针的东西,但我似乎无法使用接口在Java中使用它。
class Com{
int argsCount;
//pointer to function
public Com (int argCount)
{
this.argsCount=argCount;
}
}
Map <String,Com> verMap= new HashMap<String,Com>();
verMap.put("clear", *here*);
interface clearConsoleFunction {
public String clearConsole();
}
clearConsoleFunction函数的主体应该这样做:
Runtime.getRuntime().exec("cls");
我只需要从地图中调用 here 部分中的clearConsole,这就是我尝试使用界面的原因,因为我不知道它是怎么回事可以做到,我似乎无法做到。
答案 0 :(得分:1)
如果要将接口用作函数指针替换,则必须实现单个接口而不是每个命令的接口。
如果您不想为每个命令创建一个类,则可以使用匿名类
package com.me;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String [] args) {
Map<String, CommandRunner> verMap = new HashMap<String, CommandRunner>();
// Add all the commands :
verMap.put("clear", new CommandRunner() {
@Override
public String run() {
try {
Runtime.getRuntime().exec("cls");
} catch (IOException e) {
throw new RuntimeException(e);
}
return "";
}
});
// Run it
verMap.get("clear").run();
}
}
和CommandRunner接口:
package com.me;
public interface CommandRunner {
String run();
}