Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

Реклама :





Каждому методу, полю, конструктору класса также соответствуют объекты, список которых можно получить вызовом соответствующих ме­тодов объекта Class: getMethods(), getFields(), getConstructors(), getDeclaredMethods() и т.д. В результате будут получены объекты, кото­рые отвечают за поля, методы, конструкторы объекта. Их можно исполь­зовать для формирования динамических вызовов Java - этот механизм называется reflection. Необходимые классы содержатся в пакете java. lang. reflection.

Рассмотрим пример использования этой технологии:

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 ¡=0; KvehicleNames.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.newlnstance(); System.out.println("create vehicle:" +

vehicle.getClass()); vehicle.go(); } catch(ClassNotFoundException e) { System.out.printlnf'Exception:" + e);

} catch(lnstantiationException e) {

System.out.printlnf'Exception: " + e);

}

}

}

}

Если запустить эту программу, на экран будет выведено следующее:

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

В этом примере делается попытка создать с помощью reflection три объекта. Имена классов, от которых они должны быть порождены, запи­саны в массив vehicleNames. Объект класса Automobile был успешно со­здан, причем, дальнейшая работа с ним велась через интерфейс Vehicle