Если запустить эту программу, на
package demo.lang; interface Vehicle { void go(); } class Automobile implements Vehicle { public void go() { System.out.println("Automobile go!"); } } class Truck implements Vehicle { public Truck(int i) { super(); } public void go() { System.out.println("Truck go!"); } } public class VehicleStarter { public static void main(String[] args) { Vehicle vehicle; String[] vehicleNames = {"demo.lang.Automobile", "demo.lang.Truck", "demo.lang.Tank"}; for(int i=0; i<vehicleNames.length; i++) { try { String name = vehicleNames[i]; System.out.println("look for class for: " + name); Class aClass = Class.forName(name); System.out.println("creating vehicle..."); vehicle = (Vehicle)aClass.newInstance(); System.out.println("create vehicle: " + vehicle.getClass()); vehicle.go(); } catch(ClassNotFoundException e) { System.out.println("Exception: " + e); } catch(InstantiationException e) { System.out.println("Exception: " + e); } } } }
Пример 13.3.
Если запустить эту программу, на экран будет выведено следующее:
look for class for: demo.lang.Automobile creating vehicle... create vehicle: class demo.lang.Automobile Automobile go! look for class for: demo.lang.Truck creating vehicle... Instantiation exception: java.lang.InstantiationException look for class for: demo.lang.Tank Class not found: java.lang.ClassNotFoundException: demo.lang.Tank
Пример 13.4.
В этом примере делается попытка создать с помощью reflection три объекта. Имена классов, от которых они должны быть порождены, записаны в массив vehicleNames. Объект класса Automobile был успешно создан, причем, дальнейшая работа с ним велась через интерфейс Vehicle. Класс Truck был найден, но при попытке создания объекта было брошено, а затем обработано исключение java.lang.InstantiationException, поскольку конструктор без параметров отсутствует. Класс java.lang.Tank определен не был и поэтому при попытке получить соответствующий ему объект Class было выброшено исключение java.lang.ClassNotFoundException.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий