|
||||||
Программирование мобильных телефонов
Программирование на Java
|
Класс Class Класс Object , стоящий во главе иерархии классов Java, представляет все объекты, действующие в системе, является их общей оболочкой. Всякий объект можно считать экземпляром класса Object . Класс с именем class представляет характеристики класса, экземпляром которого является объект. Он хранит информацию о том, не является ли объект на самом деле интерфейсом, массивом или примитивным типом, каков суперкласс объекта, каково имя класса, какие в нем конструкторы, поля, методы и вложенные классы. В классе class нет конструкторов, экземпляр этого класса создается исполняющей системой Java во время загрузки класса и предоставляется методом getciass() класса object , например: String s = "Это строка"; Class с = s.getClass(); Статический метод forName(string class) возвращает объект класса class для класса, указанного в аргументе, например: Class cl = Class.forName("Java,lang.String"); Но этот способ создания объекта класса class считается устаревшим (deprecated). В новых версиях JDK для этой цели используется специальная конструкция — к имени класса через точку добавляется слово class : Class c2 = Java.lang.String.class; Логические методы isArray(), isIntetface(), isPrimitive() позволяют уточнить, не является ли объект массивом, интерфейсом или примитивным типом. Если объект ссылочного типа, то можно извлечь сведения о вложенных классах, конструкторах, методах и полях методами getoeciaredciasses() , getdeclaredConstructors(), getDeclaredMethods(), getDeclaredFields() , в виде массива классов, соответствейно, Class, Constructor, Method, Field . Последние три класса расположены в пакете java.lang.reflect и содержат сведения о конструкторах, полях и методах аналогично тому, как класс class хранит сведения о классах. Методы getClasses(), getConstructors(), getlnterfaces(), getMethods(), getFieids() возвращают такие же массивы, но не всех, а только открытых членов класса. Метод getsuperciass() возвращает суперкласс объекта ссылочного типа, getPackage() — пакет, getModifiers() — модификаторы класса В битовой форме. Модификаторы можно затем расшифровать методами класса Modifier из пакета Java.lang.reflect . Листинг 4.6 показывает применение этих методов, а рис. 4.7 — вывод результатов Листийс 4.6 tМетоды класса Class в программе ClassTest import java.lang.reflect.*; class ClassTest{ public static void main(String[] args)( Class с = null, c1 = null, c2 = null; Field[] fld = null; String s = "Some string"; с = s.getClass(); try{ cl = Class.forName("Java.lang.String"); // Старый стиль c2 = Java.lang.String.class; // Новый стиль if (!c1.isPrimitive()) fid = cl.getDeclaredFields(); // Все поля класса String }catch(Exception e){} System.out.println("Class c: " + c); System.out.println("Class cl: " + cl); System,out.println("Class c2: " + c2); System.out.printlnt"Superclass c: " + c.getSuperclass()); System.out.println("Package c: " + c.getPackageO); System.out.printlnf"Modifiers c: " + c.getModifiers()); for(int i = 0; i < fid.length; i++) System.out.println(fld[i]); } } Методы, возвращающие свойства классов, вызывают исключительные ситуации, требующие обработки. Поэтому в программу введен блок try{} catch() {} . Рассмотрение обработки исключительных ситуаций мы откладываем до главы 16.
Рис. 4.7. Методы класса Class в программе ClassTest
|
|
||||
Copyright © vzlom-1.ru 2020-2021
|