如何将主类重写为要从另一个类

时间:2017-04-05 00:15:40

标签: java

我已经在主要的 MonopolyGame.java 游戏类中编写了我的程序 - 然而 - 我正在添加诸如启动画面等功能;我想从一个单独的类(RunFile.java)中调用其中的每一个。如何重写我的主类的以下部分,以便可以从RunFile.java中调用它。当我尝试这样做时,我收到以下错误:

  

对于MonopolyGame类型

,MonopolyGame()方法未定义

MonopolyGame.java

public class MonopolyGame extends JFrame{

// PRIVATE STATIC/DECLARATIONS ARE HERE

public static void main(String[] args) throws Exception {

{
    //THIS IS WHERE I USED TO CALL THE SPLASH SCREEN

 // SplashScreen s = new SplashScreen(8000);
 // s.Splash();

        EventQueue.invokeLater(new Runnable() {

        public void run() {

            try {
                MonopolyGame window = new MonopolyGame();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }


        }
    });


}}


  /**
  * Create the application.
  */
public MonopolyGame() 
{

    try {
        initialize();
          for(int i = 0; i < 41 ; i++)
          {
              properties[i]=new Props();
          }
          setProperties();
    }
    catch (InterruptedException e) 
    {
        e.printStackTrace();
    }
}



public void initialize()  throws InterruptedException {
    //REST OF PROGRAM

RunFile.java

public class RunFile{

public static void main(String[] args)
{
SplashScreen s = new SplashScreen(8000);
s.Splash();

MonopolyGame m = new MonopolyGame();
m.MonopolyGame();
}
}

2 个答案:

答案 0 :(得分:1)

您需要做的就是删除m.MonopolyGame()。由于它与类具有相同的名称,因此它是一个构造函数,因此当您执行MonopolyGame m = new MonopolyGame();时,它会在其中运行逻辑,因此您无需再次执行此操作。

如果你想单独调用它,你应该将方法的名称改为除classname之外的东西(并添加一个返回类型,如void)

答案 1 :(得分:0)

您不需要重写MonopolyGame()类,只需在RunFile类中反映MonopolyGame()main方法即可。

public class RunFile {
    public static void main(String[] args) {
        Class<?> aClass = Class.forName(MonopolyGame.class.getName());
        Method meth = aClass.getMethod("main", String[].class);
        meth.invoke(null, (Object) args);
    }
}