我有一个类,其中包含一个下拉菜单。为了节省空间,并且由于菜单的内容永远不会改变,我为填充每个实例菜单的整个类制作了一个静态 DataProvider。我希望用像这样的实际功能填充列表:
tmpArr.push({label:"Details...", funct:openDetailsMenu, args:""});
然后将 tmpArr 分配给 DataProvider。因为 DataProvider 是静态的,所以包含该代码的函数也需要是静态的,但数组中的函数是非静态的。起初这似乎不是问题,因为当用户单击菜单项时,下拉菜单可以在其父项上调用非静态“executeFunction(funct, args)”。但是,当我尝试编译时,设置 DataProvider 的静态函数找不到正在传递的非静态函数。如果编译器相信我,代码就可以正常工作!
简单的解决方案是只传递字符串并使用 switch 语句来调用基于它的函数,但这很大、丑陋、不优雅且难以维护,特别是如果从这个类继承了某些东西。更简单的解决方案是使 DataProvider 非静态,但我想知道是否有其他人有处理这个问题的好方法?让静态函数能够看到它的非静态兄弟?
谢谢。