是否可以通过整个主类存在主类实例的范围?我试图从我的对象类中运行方法,但方法是在主类中。 简化的主类看起来像这样
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();一次?
答案 0 :(得分:2)
使x成为静态变量:
private static MyMain x = new MyMain();
或使更改函数为静态,因此您不需要实例来调用它:
public static void change() { ...
答案 1 :(得分:0)
我会将主对象作为依赖项传递给其他对象。或者更好地隔离接口(类似于IChangeable)并传递它而不是实际对象。
作为一种解决方法,您可以将主对象设为Singleton
答案 2 :(得分:0)
您必须选择扩大范围。要么将MyMain的引用传递给应该从那里调用方法的每个对象,要么添加一个保存MyMain的静态变量。
第一种方法可以轻松完成,因为它可能会创建所有其他对象。因此,编写new Foo(this)
而不是new Foo()
会很容易。这称为控制反转。
另一种方法实际上会引入一个全局变量。这种模式称为单例模式。 看这里实现:(首先来自谷歌) http://radio-weblogs.com/0122027/stories/2003/10/20/implementingTheSingletonPatternInJava.html