2016-02-27 114 views
-2

我有两个轴承类 - 一个GUI和服务器。他们都有main()方法。当点击“连接”按钮(从类GUI)时,我想从main()函数开始启动类Server中的所有进程。我能够做到这一点,有没有办法避免它?呼叫从一个类的主要方法,另一个类的主要方法

我已经累到: - 删除服务器类的主要(字串[] args)的一部分,initServer将其重命名,然后通过GUI说

Server kb = new Server(); 
kb.initServer();` 
  • 说以下内容:

    Server.main()(在这种情况下,我跟上主()秒两类)

这就是我现在所拥有的全部功能,当点击连接按钮时,它的事件发生,但所有的服务器检查都显示在命令行中。

+0

解决的办法是不要有一类叫对方的主力,但构建你的代码,以便一个类可以使用符合OOP的方式使用另一个类的实例。换句话说,重新考虑并改进代码库。 –

回答

2

你在找这样的吗?

Test.java

public class Test { 
    private void run() { 
     new Test2(); 
    } 

    public static void main(String[] args) { 
     Test t = new Test(); 
     t.run(); 
    } 
} 

Test2.java

public class Test2 { 
    Test2() { 
     System.out.println("Hi"); 
    } 
} 

凡当函数run()在第一类被执行时,其执行第二类?在你的情况下,你会这样做与ActionListener和第二类将启动您的服务器

但要正确回答这个问题,你怎么能从另一个类叫主?,你可以做这样的:

Test.java

public class Test { 
    private void run() { 
     new Test2().main(null); 
    } 

    public static void main(String[] args) { 
     Test t = new Test(); 
     t.run(); 
    } 
} 

Test2.java

public class Test2 { 
    public static void main(String[] args) { 
     System.out.println("Hi"); 
    } 
} 
+0

为什么downvote? – Dan

+1

我不明白一些人downvoting。你的回答似乎很合理。 –

+0

@丹,这不是我的低调投票....回到这个话题上,我想我必须尝试一下。它应该是相似的。没有任何意义,我将Server类保留为主类,因为只有当条件为真时,它才会执行,这意味着我的main()必须只在GUI中。我会改进这两者,我会尝试你刚才给我的建议。我只是分别在两个班上工作,现在我想到了加入他们的地步......只有那两个搞砸了整个事情,应该是小事 – KDX2