如何使Main类实例的作用域存在于整个类中



是否有可能使一个主类实例的作用域存在于整个主类中?我试图从我的对象类运行方法,但方法是在主类。简化后的主类如下所示

    public static void main (String[] args)
{
    MyMain x = new MyMain ();
}
    public void change()
{
    System.out.println("whatever");
}
    MyMain()
{
    System.out.println("--1--");
}

现在,如果我想从对象调用public void change方法,我通常只使用x.change();或MyMain.x.change;在对象中,但是x的作用域显然没有到达对象。是否有一种方法使范围更大的对象,而只说MyMain x = new MyMain();一次?

设置x为静态变量:

private static MyMain x = new MyMain();

或者将更改函数设置为静态,这样就不需要实例来调用它了:

public static void change() { ...

我将main对象作为依赖传递给其他对象。或者更好地隔离一个接口(比如ichangable),并传递它而不是实际的对象。

作为一种变通方法,你可以将main对象设置为Singleton

您必须选择扩大作用域。要么你传递一个对MyMain的引用到每个应该从那里调用方法的对象,要么你添加一个静态变量来保存你的MyMain。

第一种方法很容易实现,因为它可能会创建所有其他对象。所以把new Foo()写成new Foo(this)就容易多了。这叫做控制反转。

另一个方法实际上会引入一个全局变量。这种模式称为单例模式。看看这里的实现:(从谷歌的第一个点击)http://radio-weblogs.com/0122027/stories/2003/10/20/implementingTheSingletonPatternInJava.html

相关内容

  • 没有找到相关文章

最新更新