我是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");
我所需要的就是从地图中调用clearConsole,这就是为什么我尝试使用接口,因为我不知道还能怎么做,而且我似乎做不对。
发布于 2014-10-29 18:59:05
如果您想使用接口作为函数指针的替代,您必须实现单个接口,而不是每个命令实现一个接口。
如果不想为每个命令创建类,可以使用匿名类
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();
}
https://stackoverflow.com/questions/26628303
复制相似问题