如何防止静态方法在不同的包中调用?

时间:2014-01-02 22:58:18

标签: java static

好的,所以我的问题可能会有点令人困惑,所以请耐心等待。

我是以静态的方式从不同的类访问此方法 :

// Call

GuiHandling.handleGui();

// Method

public static void handleGui()
{
    EventQueue.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            try
            {
                GUI gui = new GUI();
                gui.setLocationRelativeTo(null);
                TabMaker.MAIN_GUI = gui;
            } catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    });
    do
        General.sleep(10);
    while (!Config.MOVE_ON && !Config.STOP_SCRIPT);
}

我在java中有两个项目,具有完全相同的包和类命名,即。 scripts.gui.guiUtil

当我运行程序时,其他项目的GUI将加载。

所以,基本上我要问的是,我将如何去除静态修饰符,并非静态地访问它以便正确加载GUI?

注意: - 我没有导入其他类        - 它正在加载另一个GUI,因为两个项目都在同一个JVM下运行        - 我试过这个:http://java.dzone.com/articles/why-static-bad-and-how-avoid         但我不确定如何初始化Client构造函数,或者即使这样可以解决我的问题。

在此先感谢,如果我能清除任何内容,或者我还有其他任何内容,请告诉我

1 个答案:

答案 0 :(得分:2)

我不认为这里的问题是静态的与非静态的,而是你的软件包名称存在冲突。听起来他们两个都在你的类路径上。这可能会导致问题,因为首先会加载类路径中的那个。

您需要1)只在您的类路径中有一个,2)更改包命名约定或3)确保您要加载的那个在类路径上的另一个之前。选项#3虽然脆弱但容易破碎,所以只能将其作为最后的手段使用。