Java - использовать основной метод пакета в другом классе

Скажем, у меня есть пакет под названием com.Gazzali, и внутри этого пакета есть еще 3 класса.

package com.Gazzali;
//Driver class
public class Main {

public static void main(String[] args) {
    System.out.println("Hey There !");
    FireCall target = new FireCall(); // calls 2nd class (named: Firecall)
    target.callfired();
 }
}

2 класс:

package com.Gazzali;

public class FireCall {
   public void callfired()
   {
    System.out.println("Calling function Triggered.");
    Execute Fire = new Execute(); //calls 3rd class (named : Execution).
    if (Fire.click() == 1)
        System.out.println("You're Dead, Boy !!!");
    else
        System.out.println("Whoooss Saved !!!");
    }
 }

3 класс:

package com.Gazzali;
import java.util.Scanner;

public class Execute {
int choice;
Scanner query = new Scanner(System.in);

public int click()
{
    System.out.println("Enter a choice : ");
    choice = query.nextInt();
    if (choice % 2 == 0)
    {
        return 1;
    }
    else
        return 0;
}
}

эти 3 составляют мой пакет com.Gazzali. Теперь в другом файле (RunPackTest.java) я хочу вызвать метод main класса Main (класс драйвера). Итак, я попытался импортировать, как показано ниже:

import com.Gazzali.Main;
public class RunPackTest {
public static void main(String[] args) {
    Main run = new Main(); //calling Main method of Driver class of the package 
    System.out.println(run); //Doesn't seem to work,IDE only return 0 
}

}

Как это сделать? поскольку метод main класса Main запускает программу и соответственно вызывает другой класс пакета.

new Main() просто создает новый экземпляр, но больше ничего не делает. Либо вызовите run.main(args), либо (лучше) предоставьте метод, который фактически содержит логику, и вызовите его из обоих методов main().
Thomas 07.08.2018 16:23

Точно: вызывать другой основной метод - плохая практика.

GhostCat 07.08.2018 16:23

На первый взгляд кажется, что вы путаете классы с методами; вы уверены, что вам нужно создать целый новый класс, чтобы просто реализовать в них один метод?

Zephyr 07.08.2018 16:26

@Thomas, Спасибо, теперь все работает!

Arif Hamim 07.08.2018 16:28

@Zephyr, Яш, я новичок в Java. Я практиковался на package, как методы вызова ООП C++.

Arif Hamim 07.08.2018 16:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
3 647
1

Ответы 1

Я считаю, что это сработает:

import com.Gazzali.Main;

public class RunPackTest {
    public static void main(String[] args) {
        Main.main(null);
    }
}

Вы можете вызвать main, как и любой другой метод, хотя в целом это не очень хорошая практика.

Другие вопросы по теме