netbeans ServiceProvider不从方法返回变量

时间:2014-06-20 11:34:48

标签: java netbeans lookup netbeans-platform service-provider

我正在使用NetBeans平台开发桌面应用程序。该应用程序将在顶级组件中放置一个地图,用户可以在其上绘制布局和其他元素。该元素存储在hashmap中。它们通过鼠标手势添加到哈希映射中。

此时,我需要在按下UI上的按钮时检索hashmap对象。该按钮位于moduleA中,散列图,地图和对象在moduleB中定义。我试图通过使用ServiceProvider模式来做到这一点。所以我的代码如下:

package org.dhviz.design.gui.buttonToolbar;
//...annotations here...
public final class AssociateConsToPipes implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        Collection<? extends DhvizJMapViewerInterface> allHandlers1 = Lookup.
        getDefault().lookupAll(DhvizJMapViewerInterface.class);

        for (DhvizJMapViewerInterface chi1 : allHandlers1) {
            System.out.println(chi1.getMapConsumerHashMap());
        }
    }
}

实现接口的类是如此定义的,它放在模块B中:

@ServiceProvider(service = DhvizJMapViewerInterface.class)
public class DhvizJMapViewer
        extends JMapViewer implements DhvizJMapViewerInterface {

    protected LinkedHashMap<Integer, MapMarkerElementImpl> mapSourceHashMap = null;
    protected LinkedHashMap<Integer, MapMarkerElementImpl> mapConsumerHashMap = null;
    protected LinkedHashMap<Integer, MapPipeImpl> mapPipeHashMap = null;

    public DhvizJMapViewer() {    
        this(new MemoryTileCache(), 8);
        //map controllers for interaction on the map
        mapController = new DefaultDhvizMapController(this);
        this.setScrollWrapEnabled(false);   
    }

    public DhvizJMapViewer(TileCache tileCache, int downloadThreadCount) {
//some init code here
    }

我希望在按下按钮时得到hashmap,但我总是得到一个空对象,虽然我可以看到hashmap不是空的。

有人可以解释我的原因吗?非常感谢你

0 个答案:

没有答案