Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

20.3 Класс java.lang.Class

Экземпляры класса Class представьте классы и интерфейсы в пути, которым может управлять рабочая программа Java. Каждый массив также принадлежит классу, представленному a Class объект, который совместно используется среди всех массивов с тем же самым типом элемента и числом размерностей.

Нет никакого общедоступного конструктора для класса Class. Виртуальная машина Java автоматически создает Class объекты как классы загружаются; такие объекты не могут быть созданы пользовательскими программами.

public final class Class {
	public String toString();
	public String getName();
	public boolean isInterface();
	public Class getSuperclass();
	public Class[] getInterfaces();
	public Object newInstance()
		throws InstantiationException, IllegalAccessException;
	public ClassLoader getClassLoader();
	public static Class forName(String className)
throws ClassNotFoundException; }

20.3.1 public String toString()

Если это Class объект представляет класс (который может быть объявленным классом или классом массива), строка возвращается состоящий из слова class, пространство, и имя класса как возвращено getName метод (§20.3.2). Если это Class объект представляет интерфейс, строка возвращается состоящий из слова interface, пространство, и имя интерфейса как возвращено getName метод.

Другими словами этот метод возвращает строку, равную значению:

(isInterface() ? "interface " : "class ") + getName()
Переопределения toString метод Object (§20.1.2).

20.3.2 public String getName()

Полностью определенное имя класса или интерфейса представляется этим Class объект возвращается как a String. Например:

new Object().getClass().getName()
возвраты "java.lang.Object".

Если этот объект класса представляет класс массивов, то имя состоит из имени элемента, вводят формат подписи Java, которому предшествуют один или более"["символы, представляющие глубину вложения массива. Например:

(new Object[3]).getClass().getName()
возвраты "[Ljava.lang.Object;" и:

(new int[3][4][5][6][7][8][9]).getClass().getName()
возвраты "[[[[[[[I". Кодирование имен типов элемента следующие:


B				byte
C				char
D				double
F				float
I				int
J				long
Lclassname;				class or interface
S				short
Z				boolean
Имя класса имени класса или интерфейса дается в полностью определенной форме как показано в примере выше. Поскольку полное описание дескрипторов типа видит главу по формату файлов класса в Спецификации виртуальной машины Java.

20.3.3 public boolean isInterface()

Если это Class объект представляет интерфейс, true возвращается. Если это Class объект представляет класс, false возвращается.

20.3.4 public Class getSuperclass()

Если это Class объект представляет любой класс кроме класса Object, тогда Class это представляет суперкласс того класса, возвращается. Если это Class объект является тем, который представляет класс Object, или если это представляет интерфейс, null возвращается. Если это Class объект представляет класс массива, тогда Class это представляет класс Object возвращается.

20.3.5 public Class[] getInterfaces()

Этот метод возвращает массив объектов, которые представляют интерфейсы. Массив может быть пустым.

Если это Class объект представляет класс, массив содержит объекты, представляющие все интерфейсы, непосредственно реализованные классом. Порядок интерфейсных объектов в массиве соответствует порядку интерфейсных имен в implements пункт объявления класса представляется этим Class объект. Например, учитывая объявление класса:

class Shimmer implements FloorWax, DessertTopping { ... }
предположите значение s экземпляр Shimmer; значение выражения:

s.getClass().getInterfaces()[0]
Class объект, который представляет интерфейс FloorWax; и значение:

s.getClass().getInterfaces()[1]
Class объект, который представляет интерфейс DessertTopping.

Если это Class объект представляет интерфейс, массив содержит объекты, представляющие все интерфейсы, непосредственно расширенные интерфейсом - то есть, непосредственными суперинтерфейсами интерфейса. Порядок интерфейсных объектов в массиве соответствует порядку интерфейсных имен в extends пункт объявления интерфейса представляется этим Class объект.

20.3.6 public Object newInstance()
throws InstantiationException, IllegalAccessException

Этот метод создает и возвращает новый экземпляр класса, представленного этим Class объект. Это делается точно как будто по выражению создания экземпляра класса (§15.8) с пустым списком параметров; например, если t Class объект, который представляет класс Thread, тогда t.newInstance() делает точно ту же самую вещь как new Thread(). Если бы оценка такого выражения создания экземпляра класса завершилась бы резко, то звонок newInstance метод завершится резко по той же самой причине. См. также §11.5.1.2 для больше на InstantiationException.

20.3.7 public ClassLoader getClassLoader()

Этот метод возвращает ссылку на загрузчик класса (§20.14), который загрузил этот класс. Если у этого класса нет никакого загрузчика класса, то null возвращается.

20.3.8 public static Class forName(String className)
throws ClassNotFoundException

Учитывая полностью определенное имя класса, этот метод пытается определить местоположение, загрузить, и соединить класс (§12.2). Если это успешно выполняется, то ссылка на Class объект для класса возвращается. Если это перестало работать, то a ClassNotFoundException бросается.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com

free hit counter