创建要调用的方法列表

时间:2015-01-01 22:45:25

标签: java

有没有办法制作一个“指令”列表来调用?

List<???> methods = new ArrayList<???>();
for (int i = 0; i < methods.size(); i++) {
    ((???)methods.get(i)).do();
}

这基本上就是我遇到的问题 我想把

methods.add(graphics.setColor(Color.WHITE));
methods.add(graphics.drawRect(0, 0, 32, 32));

然后在循环中调用这些方法吗?

2 个答案:

答案 0 :(得分:3)

您可以为通用功能创建接口:

interface GenericFunction
{
    void do();
}

然后,对于要与其一起使用的每个函数,创建一个类:

class SetColor implements GenericFunction
{
    private Color m_Color;

    SetColor(Color c) { m_Color = c; }

    void do()
    {
        graphics.setColor(m_Color);
    }
}

然后创建这些函数类的实例并将它们放在数组列表中:

List<GenericFunction> methods= new List<GenericFunction>();
methods.add(new SetColor(Color.WHITE));
for (int i = 0; i < methods.size(); i++) {
    methods.get(i).do();
}

答案 1 :(得分:2)

尝试:

List<Runnable> methods = new ArrayList<>();

methods.add(new Runnable() {
    @Override
    public final void run() {
        graphics.setColor(Color.WHITE));
    }
});
methods.add(new Runnable() {
    @Override
    public final void run() {
        graphics.drawRect(0, 0, 32, 32));
    }
});

for(Runnable method : methods)
    method.run();