2016-11-07 151 views
0

我想外包我的Menu-Creater,所以我創建了Class Menuhelper。Java - 解析方法調用其他類

在那裏,我有一個名爲「addActionListener方法」方法誰增加了一個動作到的MenuItems

public static void addActionListener(JMenuItem menuItem) //Need parsed Method 
    { 

    menuItem.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
     //MethodeCall 
     } 
    }); 
    } 

如何可以解析我需要誰的方法?作爲字符串?

+0

不清楚你的意思。您是否想根據菜單項的名稱創建特定的偵聽器? – GhostCat

+0

我有10菜單項始終具有相同的addActionListener,但與其他方法調用(例如,ReadFile(File tfile),LoadFile(File tfile))。所以我想用extern方法減少代碼方法「addActionListener」 – Drextor

+0

@Drextor請顯示重複的代碼。您使用(靜態!!!)方法的方法並沒有真正的幫助。 –

回答

2

您可以使用回調方法或java 8 lambda表達式。

public static void addActionListener(JMenuItem menuItem, Callback callback) //Need parsed Method { 
    menuItem.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      callback.doAction(); 
     } 
    }); 
} 
+0

但是來電方有什麼不同?在使用代碼的地方,如果我創建一個匿名實例(或一個lambda)'Callback'或'ActionListener',則沒有(很大的)區別... –

+0

這篇文章解釋了兩種方法中的不同之處http:/ /stackoverflow.com/questions/13203966/anonymous-class-override-vs-passing-an-interface-for-designing-callbacks-in-jav –

相關問題