2015-01-01 31 views
0

有沒有辦法讓「指令」列表調用?創建要調用的方法列表

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)); 

然後讓這些方法在循環中叫什麼名字?

回答

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(); 
} 
+0

對於我所做的,這是一個更好的解決方案:D –

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(); 
+0

謝謝,這工作得很好:D –