Я не рекомендую, чтобы вы начали изучать рефлексию;Я думаю, что это слишком сложно для новичка, и даже для некоторых программистов среднего уровня, а также слишком вовлечен.Я имею в виду, что даже если вы понимаете концепции и т. Д., Рефлексия - это большая тема, которая уводит вас далеко от выполнения конкретных вещей в программировании.
Поэтому я рекомендую это вместо:
Пусть все ваши классы «присваивания» реализуют интерфейс, который предписывает им определять метод, который вы затем собираетесь выполнить.Например, определите
public interface MainClass
{
public void main(String[] args);
}
в классе с именем MainClass.java, а затем попросите каждое из ваших назначений реализовать этот интерфейс:
public class Lab2 implements MainClass
Т.е., просто поставьте «Implements MainClass» послеобъявление класса.
Если вы еще не знаете, вам нужно будет обработать массив строк «arguments», передаваемый методу main в java из командной строки.Именно здесь будут отображаться «exe» и имя класса, который пользователь хочет, чтобы вы выполнили.
Таким образом, ваш метод «main main» собирается протестировать первый аргумент, чтобы убедиться, что онравно "exe".Если это так, то 1. добавьте имя пакета (java.assignments) к имени вашего класса, создайте экземпляр класса с помощью Class.forName (), приведите его к Main и выполните метод main.Этот код будет выглядеть примерно так:
if (args[1].equalsIgnoreCase("exe")) // it might be args[0], I can't remember
{
String className = "java.assignments." + args[2];
Object o = Class.forName(className);
Main mainMethodClass = (Main)o;
o.main();
}
Class.forName () создает объект с указанным именем класса.Все, что вам нужно, это строка, которая является полностью определенным именем.
Строка после Class.forName () выше выполняет «приведение» недавно созданного объекта к интерфейсу Main.Если ваш объект не реализует (или не расширяет) Main, ваш код завершится ошибкой в строке, которая выполняет приведение.Он говорит компилятору разрешить вам делать с ним те вещи, которые разрешены для класса, реализующего Main.
После этого объект становится таким же, как тот, с которым вы делали «новый», и вы можете вызывать любойметод, определенный на нем.
Я бы сказал, чтобы эта часть выполнялась первой для некоторых разных классов.Если вы по-прежнему заинтересованы в отображении источника и хотите знать, где его разместить и т. Д., Мы можем перейти к этому на другом уроке.Я действительно думаю, что если вы запустите это, этого будет достаточно, чтобы выполнить одно усилие.
rc