2012-07-07 55 views
0

我有这个类:传中,主要的类的对象科瑞到另一个类

public class Example 
{ 
    public void static main(String[] args) 
    { 
     Object obj = new Object(); 
     OtherClass oc = new OtherClass(obj); 
    } 
} 

public class OtherClass 
{ 
    private Object object; 
    public OtherClass(Object ob) 
    { 
    this.object = ob; 
    } 
} 

现在我会在另一个主要使用OtherClass。我能怎么做? 这是我想使用的类实例创建OtherClass对象之前

public class myownmain 
{ 
    public static void main(String[] args) 
    { 
     // Here I need OtherClass object created in Example class 
    } 
} 
+2

因此,基本上你正在运行2个应用程序,并且你想在它们之间传递数据?看看['Inter-process communication'](http://en.wikipedia.org/wiki/Inter-process_communication)。 – 2012-07-07 09:26:06

+0

@ Eng.Fouad是的。这是我想要做的......但我失败了 – user1508419 2012-07-07 09:34:36

回答

1

在这些不同类的主要功能代表不同的应用类,你将无法指在一个应用程序中创建的对象从另一个。

如果你想在另一个主函数中使用类似的对象,你只需要创建新的实例并使用它们。尽管你试图达到什么目的并不明显。

1

Java程序通常只有一个main方法,或者更具体地说,当程序启动时,只有一个main方法会被调用。但是,可以从您的电话中调用其他main方法。

如果不重建上述Example类,则不能这样做,因为OtherClass实例是main方法中的局部变量,因此您无法检索它。

一个解决办法是,以实例化OtherClass在自己main方法:

public class myownmain { 
    public static void main(String[] args) { 
     Object obj = new Object(); 
     OtherClass oc = new OtherClass(obj); 
    } 
} 

另一种选择是改写Example类暴露OtherClass实例作为一个静态属性:

public class Example { 
    private static OtherClass oc; 

    public static OtherClass getOc() { 
     return oc; 
    } 

    public static void main(String[] args) { 
     Object obj = new Object(); 
     oc = new OtherClass(obj); 
    } 
} 

然后你可以在致电Example.main后得到这个实例:

public class myownmain { 
    public static void main(String[] args) { 
     Example.main(args); 
     OtherClass oc = Example.getOc(); 
    } 
} 
1

您应该只有一个main(String[] args)方法。如果你想通过OtherClass实例类创建像

public static OtherClass getOtherClass(Object obj) { 
    return new OtherClass(obj); 
} 

和方法,然后在MyOwnMain类只需添加

Object obj = new Object(); 
OtherClass oc = Example.getOtherClass(obj); 

但是,如果你的意思@ Eng.Fouad想要有两个正在运行的应用程序,只需按照他的链接。

+0

不幸的是,你的解决方案对于我的案例研究来说并不舒适,因为Object obj应该是Web服务器的一个支出。我无法两次将Web服务器的实例 – user1508419 2012-07-07 09:36:02

+0

为什么你不能两次? – Sajmon 2012-07-07 09:39:41

+0

因为Object obj = new Object()在我的情况下是一个Web服务器的遗迹。它已经在exxaple class中创建了。我不能再次将它传递给mymainmain,因为它应该被创建两次 – user1508419 2012-07-07 09:42:23