2016-11-07 111 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 –

相关问题