Задать вопрос
@pqgg7nwkd4

Как узнать какой класс запущен из командной строки java?

Добрый день.

Есть класс:
public abstract class Robot {
  public static int main(String[] args) {
    //...
  }
}

И два его наследника:
public class Send extends Robot {
//... нет своего метода main
}

public class Recv extends Robot {
//... нет своего метода main
}


Запускаем:
java -cp . Send
java -cp . Recv

При этом запускается Robot.main();

Вопрос: Как в Robot.main() узнать какой класс я запускал: Send или Recv?
Спасибо.
  • Вопрос задан
  • 418 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Денис Загаевский К ответам на вопрос (3)
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Сделайте по-человечески.
Первое - как можно быстрее уйти от статики. Делаете у робота protected final void run(String[] arts){...тут код из main...}
Второе - у каждого из наследников делаете метод main - очень простой. Внутри него одна строчка - например, new Send().run();
Теперь в run можно по getClass определить, кто вы.
Но! Это довольно плохо - когда предок знает о потомках. Вам надо придумать, как оставить всё общее в Robot, а все различия вынести в его потомков, используя полиморфизм.
Наследование статических классов(имеющих только статические методы) - это бессмысленно чуть более, чем полностью.
Ответ написан