首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中使用函数指针实现简单的命令行解释器

在Java中使用函数指针实现简单的命令行解释器
EN

Stack Overflow用户
提问于 2014-10-29 18:44:36
回答 1查看 166关注 0票数 0

我是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,这就是为什么我尝试使用接口,因为我不知道还能怎么做,而且我似乎做不对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26628303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档