🗊Презентация Классы-оболочки в Java. (Лекция 7)

Нажмите для полного просмотра!
Классы-оболочки в Java. (Лекция 7), слайд №1Классы-оболочки в Java. (Лекция 7), слайд №2Классы-оболочки в Java. (Лекция 7), слайд №3Классы-оболочки в Java. (Лекция 7), слайд №4Классы-оболочки в Java. (Лекция 7), слайд №5Классы-оболочки в Java. (Лекция 7), слайд №6Классы-оболочки в Java. (Лекция 7), слайд №7Классы-оболочки в Java. (Лекция 7), слайд №8Классы-оболочки в Java. (Лекция 7), слайд №9Классы-оболочки в Java. (Лекция 7), слайд №10Классы-оболочки в Java. (Лекция 7), слайд №11Классы-оболочки в Java. (Лекция 7), слайд №12Классы-оболочки в Java. (Лекция 7), слайд №13Классы-оболочки в Java. (Лекция 7), слайд №14Классы-оболочки в Java. (Лекция 7), слайд №15Классы-оболочки в Java. (Лекция 7), слайд №16Классы-оболочки в Java. (Лекция 7), слайд №17Классы-оболочки в Java. (Лекция 7), слайд №18Классы-оболочки в Java. (Лекция 7), слайд №19Классы-оболочки в Java. (Лекция 7), слайд №20Классы-оболочки в Java. (Лекция 7), слайд №21Классы-оболочки в Java. (Лекция 7), слайд №22Классы-оболочки в Java. (Лекция 7), слайд №23Классы-оболочки в Java. (Лекция 7), слайд №24Классы-оболочки в Java. (Лекция 7), слайд №25Классы-оболочки в Java. (Лекция 7), слайд №26Классы-оболочки в Java. (Лекция 7), слайд №27Классы-оболочки в Java. (Лекция 7), слайд №28Классы-оболочки в Java. (Лекция 7), слайд №29Классы-оболочки в Java. (Лекция 7), слайд №30Классы-оболочки в Java. (Лекция 7), слайд №31Классы-оболочки в Java. (Лекция 7), слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему Классы-оболочки в Java. (Лекция 7). Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 7
Описание слайда:
Лекция 7

Слайд 2





Классы - оболочки
Каждому простому типу в Java соответствует класс-оболочка. 
Классы-оболочки выполняют две основные функции. 
Первая состоит в поддержке контейнера методов и переменных, относящихся к определенному типу (скажем, методов преобразования строк и констант, задающих границы интервала допустимых значений).
Рассмотрим пример кода, проверяющий можно ли использовать float вместо double:
Описание слайда:
Классы - оболочки Каждому простому типу в Java соответствует класс-оболочка. Классы-оболочки выполняют две основные функции. Первая состоит в поддержке контейнера методов и переменных, относящихся к определенному типу (скажем, методов преобразования строк и констант, задающих границы интервала допустимых значений). Рассмотрим пример кода, проверяющий можно ли использовать float вместо double:

Слайд 3





double aval  = Math.abs(value);
double aval  = Math.abs(value);
if (Float.MAX_VALUE >= aval && aval  >=
                                                           Float.MlN_VALUE)
  return fasterFloatCalc((float) value); 
else
  return slowerDoubleCalc(value);
Вторая функция классов-оболочек заключается в обеспечении возможности создания объектов для хранения значений простых типов и использования их в контексте классов, которые "умеют" обращаться только со ссылками на объекты типа Object.
Описание слайда:
double aval = Math.abs(value); double aval = Math.abs(value); if (Float.MAX_VALUE >= aval && aval >= Float.MlN_VALUE) return fasterFloatCalc((float) value); else return slowerDoubleCalc(value); Вторая функция классов-оболочек заключается в обеспечении возможности создания объектов для хранения значений простых типов и использования их в контексте классов, которые "умеют" обращаться только со ссылками на объекты типа Object.

Слайд 4





Класс-оболочка определяет неизменяемый объект для представления значения соответствующего типа. После создания объекта значение, которое в нем хранится, изменить нельзя. 
Класс-оболочка определяет неизменяемый объект для представления значения соответствующего типа. После создания объекта значение, которое в нем хранится, изменить нельзя. 
Так, например, объект, созданный в результате выполнения инструкции new Integer(1), будет всегда содержать значение 1 — в составе класса Integer нет методов, которые позволили бы его заменить.
Некоторые классы-оболочки:
Описание слайда:
Класс-оболочка определяет неизменяемый объект для представления значения соответствующего типа. После создания объекта значение, которое в нем хранится, изменить нельзя. Класс-оболочка определяет неизменяемый объект для представления значения соответствующего типа. После создания объекта значение, которое в нем хранится, изменить нельзя. Так, например, объект, созданный в результате выполнения инструкции new Integer(1), будет всегда содержать значение 1 — в составе класса Integer нет методов, которые позволили бы его заменить. Некоторые классы-оболочки:

Слайд 5





Number (это абстрактный класс –  наследуемый всеми классами – оболочками
Number (это абстрактный класс –  наследуемый всеми классами – оболочками
      Short, Byte, Integer,Long, Float, Double) 
2.Short
3. Byte
4. Integer
5.Long
6. Float
7. Double
8. Boolean
9. Character
10. Void
Описание слайда:
Number (это абстрактный класс – наследуемый всеми классами – оболочками Number (это абстрактный класс – наследуемый всеми классами – оболочками Short, Byte, Integer,Long, Float, Double) 2.Short 3. Byte 4. Integer 5.Long 6. Float 7. Double 8. Boolean 9. Character 10. Void

Слайд 6





В каждом классе –оболочке определены следующие конструкторы:
В каждом классе –оболочке определены следующие конструкторы:
принимающий в качестве параметра значение простого типа и создающий объект соответствующего класса-оболочки; например, конструкторы Character(char) и integer(int);
преобразующий содержимое единственного параметра типа String в исходное значение объекта (за исключением класса Character, в составе которого такого конструктора нет), например new Float("6.02e23"); для числовых типов строка параметра должна содержать представление величины в десятичной системе счисления — если преобразование недопустимо, выбрасывается исключение типа NumberFormatException.
Описание слайда:
В каждом классе –оболочке определены следующие конструкторы: В каждом классе –оболочке определены следующие конструкторы: принимающий в качестве параметра значение простого типа и создающий объект соответствующего класса-оболочки; например, конструкторы Character(char) и integer(int); преобразующий содержимое единственного параметра типа String в исходное значение объекта (за исключением класса Character, в составе которого такого конструктора нет), например new Float("6.02e23"); для числовых типов строка параметра должна содержать представление величины в десятичной системе счисления — если преобразование недопустимо, выбрасывается исключение типа NumberFormatException.

Слайд 7





В каждом из классов-оболочек определены методы:
В каждом из классов-оболочек определены методы:
public static  Type valueOf(String str)
Возвращает объект заданного типа Туре, содержащий значение, преобразованное из строки str. 
 Для числовых типов подразумевается, что строка содержит представление аргумента в системе счисления с основанием 10. 
Например, Float.valueOf ("6.02e23") и Integer.valueOf("16"). Вызов метода равнозначен использованию оператора new предполагающего обращение к конструктору с параметром типа String. 
Если содержимое str не может быть преобразовано, выбрасывается исключение типа NumberFormatException.
Описание слайда:
В каждом из классов-оболочек определены методы: В каждом из классов-оболочек определены методы: public static Type valueOf(String str) Возвращает объект заданного типа Туре, содержащий значение, преобразованное из строки str. Для числовых типов подразумевается, что строка содержит представление аргумента в системе счисления с основанием 10. Например, Float.valueOf ("6.02e23") и Integer.valueOf("16"). Вызов метода равнозначен использованию оператора new предполагающего обращение к конструктору с параметром типа String. Если содержимое str не может быть преобразовано, выбрасывается исключение типа NumberFormatException.

Слайд 8





2. public String toString()
2. public String toString()
Переопределенная версия метода Object. toString(), обеспечивающая получение строкового представления содержимого объекта класса-оболочки.
3. public  type typeValue()
Возвращает значение простого типа type, соответствующее содержимому текущего объекта класса-оболочки. Например, 
  new Integer(6).intValue() возвращает 6.
4. public int compareTo(Type other)
Возвращает значение, меньшее (большее) нуля или равное нулю, если содержимое текущего объекта соответственно меньше (больше) значения other того же типа Туре или равно ему. 
Метод не определен в классе Boolean.
Описание слайда:
2. public String toString() 2. public String toString() Переопределенная версия метода Object. toString(), обеспечивающая получение строкового представления содержимого объекта класса-оболочки. 3. public type typeValue() Возвращает значение простого типа type, соответствующее содержимому текущего объекта класса-оболочки. Например, new Integer(6).intValue() возвращает 6. 4. public int compareTo(Type other) Возвращает значение, меньшее (большее) нуля или равное нулю, если содержимое текущего объекта соответственно меньше (больше) значения other того же типа Туре или равно ему. Метод не определен в классе Boolean.

Слайд 9





5. public int соmраreTо(Object obj)
5. public int соmраreTо(Object obj)
Если obj относится к тому же типу, что и текущий объект, метод равнозначен compareTo(Туре). 
В противном случае выбрасывается исключение типа ClassCastException. 
Метод не определен в классе Boolean
6. public boolean equals(Object obj)
Возвращает true, если текущий объект и объект, переданный в качестве аргумента, относятся к одному типу и содержат одинаковые значения.
Например, для двух объектов х и у типа Integer выражение х.equals (у) равно true, если и только если x.intValue()   == у.intValue(). 
Если значение obj не принадлежит тому же типу, что и текущий объект, либо равно null, метод возвращает false.
Описание слайда:
5. public int соmраreTо(Object obj) 5. public int соmраreTо(Object obj) Если obj относится к тому же типу, что и текущий объект, метод равнозначен compareTo(Туре). В противном случае выбрасывается исключение типа ClassCastException. Метод не определен в классе Boolean 6. public boolean equals(Object obj) Возвращает true, если текущий объект и объект, переданный в качестве аргумента, относятся к одному типу и содержат одинаковые значения. Например, для двух объектов х и у типа Integer выражение х.equals (у) равно true, если и только если x.intValue() == у.intValue(). Если значение obj не принадлежит тому же типу, что и текущий объект, либо равно null, метод возвращает false.

Слайд 10





7. public  int  hachCode()
7. public  int  hachCode()
Возвращает хеш-код текущего объекта,  основанный на его содержимом.
Рефлексия
Пакет java.lang.reflect содержит набор метаклассов рефлексии (reflection), позволяющих подробно исследовать любой тип Java. 
С их помощью можно создать полнофункциональный брaузер типов или приложение, которое интерпретирует пользовательский код и преобразует его в фактические инструкции объявления классов, создания объектов, вызова методов и т.д. 
Все типы содержатся в пакете java.lang.reflect, за исключением классов Class и Package, которые служат частью пакета java.lang.
Описание слайда:
7. public int hachCode() 7. public int hachCode() Возвращает хеш-код текущего объекта, основанный на его содержимом. Рефлексия Пакет java.lang.reflect содержит набор метаклассов рефлексии (reflection), позволяющих подробно исследовать любой тип Java. С их помощью можно создать полнофункциональный брaузер типов или приложение, которое интерпретирует пользовательский код и преобразует его в фактические инструкции объявления классов, создания объектов, вызова методов и т.д. Все типы содержатся в пакете java.lang.reflect, за исключением классов Class и Package, которые служат частью пакета java.lang.

Слайд 11





В основе механизма рефлексии находится объект типа Class. 
В основе механизма рефлексии находится объект типа Class. 
Он позволяет получить полный список членов конкретного класса, проследить иерархию базовых типов (реализуемых интерфейсов и расширяемых классов) и извлечь информацию о самом классе (например, об используемых в его объявлении модификаторах — public, abstract, final и т.д.) и о пакете, в котором он содержится.
Механизм рефлексии позволяет создавать код, выполняющий те же действия, которые можно осуществить с помощью кода, написанного непосредственно. 
Зная наименование определенного класса (которого в момент написания программы может не быть в наличии), удается получить соответствующий объект типа Class и использовать его для создания объектов этого класса.
Описание слайда:
В основе механизма рефлексии находится объект типа Class. В основе механизма рефлексии находится объект типа Class. Он позволяет получить полный список членов конкретного класса, проследить иерархию базовых типов (реализуемых интерфейсов и расширяемых классов) и извлечь информацию о самом классе (например, об используемых в его объявлении модификаторах — public, abstract, final и т.д.) и о пакете, в котором он содержится. Механизм рефлексии позволяет создавать код, выполняющий те же действия, которые можно осуществить с помощью кода, написанного непосредственно. Зная наименование определенного класса (которого в момент написания программы может не быть в наличии), удается получить соответствующий объект типа Class и использовать его для создания объектов этого класса.

Слайд 12





Класс Class
Класс Class
Каждому типу Java — простым типам, классам, интерфейсам и массивам — соответствует собственный объект класса Class. 
Существует также специальный объект Class, представляющий служебное слово void. Объекты Class могут использоваться для получения информации о типах и — если тип относится к ссылочным — для создания новых объектов этого типа.
Описание слайда:
Класс Class Класс Class Каждому типу Java — простым типам, классам, интерфейсам и массивам — соответствует собственный объект класса Class. Существует также специальный объект Class, представляющий служебное слово void. Объекты Class могут использоваться для получения информации о типах и — если тип относится к ссылочным — для создания новых объектов этого типа.

Слайд 13





Существует четыре способа получения объекта Class: 
Существует четыре способа получения объекта Class: 
применение метода getClass; 
использование литерала типа Class (имени класса, сопровождаемого суффиксом .class, — например, String.class);
применение статического метода Class - forName с указанием полного имени класса, включающего название пакета, которому он принадлежит; 
получение данных с помощью методов рефлексии, которые возвращают объекты Class для вложенных классов и интерфейсов.
Описание слайда:
Существует четыре способа получения объекта Class: Существует четыре способа получения объекта Class: применение метода getClass; использование литерала типа Class (имени класса, сопровождаемого суффиксом .class, — например, String.class); применение статического метода Class - forName с указанием полного имени класса, включающего название пакета, которому он принадлежит; получение данных с помощью методов рефлексии, которые возвращают объекты Class для вложенных классов и интерфейсов.

Слайд 14





Рассмотрим пример(программа отображает на экране сведения об иерархии типов для типа, значение которого передается в качестве параметра командной строки)
Рассмотрим пример(программа отображает на экране сведения об иерархии типов для типа, значение которого передается в качестве параметра командной строки)
public class TypeDesc {
  public static void main(String[] args){ 
   TypeDesc desc = new TypeDesc(); 
   for(int i=0; i< args.length; i++){ 
    try {
      Class startСlass = Сlass.forName(args[i]);
      desc.printType(startClass,0,basic); } 
    catch (ClassNotFoundException e){
      System.err.println(e);  // Если возникла ошибка 
    } 
   } 
  }
Описание слайда:
Рассмотрим пример(программа отображает на экране сведения об иерархии типов для типа, значение которого передается в качестве параметра командной строки) Рассмотрим пример(программа отображает на экране сведения об иерархии типов для типа, значение которого передается в качестве параметра командной строки) public class TypeDesc { public static void main(String[] args){ TypeDesc desc = new TypeDesc(); for(int i=0; i< args.length; i++){ try { Class startСlass = Сlass.forName(args[i]); desc.printType(startClass,0,basic); } catch (ClassNotFoundException e){ System.err.println(e); // Если возникла ошибка } } }

Слайд 15





private static String[]
private static String[]
  basic= {"class", "interface" },
  supercl= {"extends", "implements"},
  iFace= { null, "extends"};
private void  printType(Class type, int depth, 
                                                                     String[] labels){
   if(type==null) return; //Завершение рекурсии
   
   //вывод информации о текущем типе
   for (int i =0; i < depth; i++)
     System.out.print("  "); 
   System.out.print(labels[type.islnterface()? 1 : 0] + " "); 
   System.out.printIn(type.getName());
Описание слайда:
private static String[] private static String[] basic= {"class", "interface" }, supercl= {"extends", "implements"}, iFace= { null, "extends"}; private void printType(Class type, int depth, String[] labels){ if(type==null) return; //Завершение рекурсии //вывод информации о текущем типе for (int i =0; i < depth; i++) System.out.print(" "); System.out.print(labels[type.islnterface()? 1 : 0] + " "); System.out.printIn(type.getName());

Слайд 16





 // вывести информацию обо всех интерфейсах, реализуемых текущим классом 
 // вывести информацию обо всех интерфейсах, реализуемых текущим классом 
 Class[] interfaces = type.getlnterfaces(); 
   for (int i =0; i < interfaces.length; i++){
      printType(interfaces[i], depth + 1,
                       type.islnterface()? iFace : supercl);
    }
// выполнить рекурсию по базовым классам 
   printType(type.getSuperclass(), depth + 1, 
                                                                           supercl);   
 }   
}
Описание слайда:
// вывести информацию обо всех интерфейсах, реализуемых текущим классом // вывести информацию обо всех интерфейсах, реализуемых текущим классом Class[] interfaces = type.getlnterfaces(); for (int i =0; i < interfaces.length; i++){ printType(interfaces[i], depth + 1, type.islnterface()? iFace : supercl); } // выполнить рекурсию по базовым классам printType(type.getSuperclass(), depth + 1, supercl); } }

Слайд 17





Результат работы программы при задании в качестве параметра строки java.util.HashMap будет
Результат работы программы при задании в качестве параметра строки java.util.HashMap будет
class java.util.HashMap 
     implements java.util.Map 
     implements java.lang.Cloneable 
     implements java.iо.Serializable 
  extends java.util.AbstractMap
     implements java.util.Map
     extends java.lang.Object
Описание слайда:
Результат работы программы при задании в качестве параметра строки java.util.HashMap будет Результат работы программы при задании в качестве параметра строки java.util.HashMap будет class java.util.HashMap implements java.util.Map implements java.lang.Cloneable implements java.iо.Serializable extends java.util.AbstractMap implements java.util.Map extends java.lang.Object

Слайд 18





В составе класса Class определен ряд простых методов-запросов, позволяющих проверить тип объекта Class:
В составе класса Class определен ряд простых методов-запросов, позволяющих проверить тип объекта Class:
public boolean islnterface()
Возвращает true, если объект Class представляет интерфейс.
2. public boolean isArray()
 Возвращает true, если объект Class представляет массив.
3. public boolean isPrimitive()
  Возвращает true, если объект Class представляет один из простых типов
     или служебное слово void.
Описание слайда:
В составе класса Class определен ряд простых методов-запросов, позволяющих проверить тип объекта Class: В составе класса Class определен ряд простых методов-запросов, позволяющих проверить тип объекта Class: public boolean islnterface() Возвращает true, если объект Class представляет интерфейс. 2. public boolean isArray() Возвращает true, если объект Class представляет массив. 3. public boolean isPrimitive() Возвращает true, если объект Class представляет один из простых типов или служебное слово void.

Слайд 19





4. public Class[]  getlnterfaces()
4. public Class[]  getlnterfaces()
Возвращает массив объектов Class, элементы которого соответствуют интерфейсам, реализуемым текущим типом. 
   Если интерфейсов, базовых по отношению к типу, не существует — из-за того, например, что тип не реализует интерфейсы непосредственно или является простым, — возвращается массив нулевой длины.
5. public Class getSuperclass()
Возвращает объект Class, который соответствует классу, базовому по отношению к текущему типу.
   Метод возвращает null, если текущий объект Class представляет класс Object, интерфейс, простой тип или служебное слово void (все они не обладают базовыми классами). 
   Если текущим типом является массив, возвращается объект Class для класса Object.
Описание слайда:
4. public Class[] getlnterfaces() 4. public Class[] getlnterfaces() Возвращает массив объектов Class, элементы которого соответствуют интерфейсам, реализуемым текущим типом. Если интерфейсов, базовых по отношению к типу, не существует — из-за того, например, что тип не реализует интерфейсы непосредственно или является простым, — возвращается массив нулевой длины. 5. public Class getSuperclass() Возвращает объект Class, который соответствует классу, базовому по отношению к текущему типу. Метод возвращает null, если текущий объект Class представляет класс Object, интерфейс, простой тип или служебное слово void (все они не обладают базовыми классами). Если текущим типом является массив, возвращается объект Class для класса Object.

Слайд 20





6. public int getModifiers()
6. public int getModifiers()
Возвращает модификаторы, используемые в объявлении типа, в виде кодированного целочисленного значения. Значение должно декодироваться с помощью констант и методов класса Modifier. 
К числу модификаторов типа относятся модификаторы доступа (public, protected и private) и признаки abstract, final и static.
Для удобства факт принадлежности типа к категории интерфейсов также кодируется, для чего применяется константа INTERFACE.
Описание слайда:
6. public int getModifiers() 6. public int getModifiers() Возвращает модификаторы, используемые в объявлении типа, в виде кодированного целочисленного значения. Значение должно декодироваться с помощью констант и методов класса Modifier. К числу модификаторов типа относятся модификаторы доступа (public, protected и private) и признаки abstract, final и static. Для удобства факт принадлежности типа к категории интерфейсов также кодируется, для чего применяется константа INTERFACE.

Слайд 21





7. public Class getComponentType()
7. public Class getComponentType()
Возвращает объект класса Class, который представляет компонентный тип массива, описываемого текущим объектом Class. 
   Если текущий объект Class не соответствует массиву, возвращается null. 
   Пусть, например, задан массив значений int; тогда метод getClass возвратит объект Class, для которого метод-запрос isArray вернет значение true, а метод getComponentType — объект int.class.
Описание слайда:
7. public Class getComponentType() 7. public Class getComponentType() Возвращает объект класса Class, который представляет компонентный тип массива, описываемого текущим объектом Class. Если текущий объект Class не соответствует массиву, возвращается null. Пусть, например, задан массив значений int; тогда метод getClass возвратит объект Class, для которого метод-запрос isArray вернет значение true, а метод getComponentType — объект int.class.

Слайд 22





8. public static Class forName(String name,  
8. public static Class forName(String name,  
                        boolean initialize, ClassLoader loader)  throws 
                                                            ClassNotFoundException
Возвращает объект Class, соответствующий названному по имени классу или интерфейсу, с помощью заданного загрузчика классов. Используя полное имя класса или интерфейса, переданное в качестве параметра name, метод предпринимает попытку обнаружить и загрузить класс или интерфейс. 
Для загрузки класса или интерфейса применяется заданный загрузчик классов. 
Если значение параметра loader равно null, используется системный загрузчик классов. 
Класс инициализируется только при условии, что значение параметра initialize равно true и ранее инициализация класса не выполнялась. 
Если класс с заданным именем не может быть найден, выбрасывается объявляемое исключение типа ClassNotFoundException.
Описание слайда:
8. public static Class forName(String name, 8. public static Class forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException Возвращает объект Class, соответствующий названному по имени классу или интерфейсу, с помощью заданного загрузчика классов. Используя полное имя класса или интерфейса, переданное в качестве параметра name, метод предпринимает попытку обнаружить и загрузить класс или интерфейс. Для загрузки класса или интерфейса применяется заданный загрузчик классов. Если значение параметра loader равно null, используется системный загрузчик классов. Класс инициализируется только при условии, что значение параметра initialize равно true и ранее инициализация класса не выполнялась. Если класс с заданным именем не может быть найден, выбрасывается объявляемое исключение типа ClassNotFoundException.

Слайд 23





Имена, передаваемые в метод forName должны быть полными, т.е. содержать наименование пакета и собственное имя класса, как, например, java.utiI.HashMap или java.lang.Object. 
Имена, передаваемые в метод forName должны быть полными, т.е. содержать наименование пакета и собственное имя класса, как, например, java.utiI.HashMap или java.lang.Object. 
Для представления имен типов массивов используется специальная система обозначений — символ [ сопровождается специальным кодом, соответствующим определенному компонентному типу массива. 
Компонентные типы кодируются согласно следующей схеме.
Описание слайда:
Имена, передаваемые в метод forName должны быть полными, т.е. содержать наименование пакета и собственное имя класса, как, например, java.utiI.HashMap или java.lang.Object. Имена, передаваемые в метод forName должны быть полными, т.е. содержать наименование пакета и собственное имя класса, как, например, java.utiI.HashMap или java.lang.Object. Для представления имен типов массивов используется специальная система обозначений — символ [ сопровождается специальным кодом, соответствующим определенному компонентному типу массива. Компонентные типы кодируются согласно следующей схеме.

Слайд 24





Код                                Тип
Код                                Тип
 В                                  byte
 С                                  char
 D                                  double
 F                                   float
 I                                    int
 J                                   long
L Имякласса                class или interface
 S                                  short
 Z                                  boolean
Описание слайда:
Код Тип Код Тип В byte С char D double F float I int J long L Имякласса class или interface S short Z boolean

Слайд 25





Например, массив элементов типа int получит имя [I, а массив объектов типа Object — [Ljava.lang.Object; Многомерный массив — это массив, компонентный тип которого также является массивом; поэтому, например, тип, объявленный как int[][], получит имя [[I .
Например, массив элементов типа int получит имя [I, а массив объектов типа Object — [Ljava.lang.Object; Многомерный массив — это массив, компонентный тип которого также является массивом; поэтому, например, тип, объявленный как int[][], получит имя [[I .
9. public Constructor[]  getConstructors() 
    public  Field[]  getFields() 
    public Method[]  getMethods() 
    public Class[]  getClasses()
C помощью данных методов можно получить сведения о public-членах, которые либо объявлены в текущем классе (или интерфейсе), либо унаследованы.
Описание слайда:
Например, массив элементов типа int получит имя [I, а массив объектов типа Object — [Ljava.lang.Object; Многомерный массив — это массив, компонентный тип которого также является массивом; поэтому, например, тип, объявленный как int[][], получит имя [[I . Например, массив элементов типа int получит имя [I, а массив объектов типа Object — [Ljava.lang.Object; Многомерный массив — это массив, компонентный тип которого также является массивом; поэтому, например, тип, объявленный как int[][], получит имя [[I . 9. public Constructor[] getConstructors() public Field[] getFields() public Method[] getMethods() public Class[] getClasses() C помощью данных методов можно получить сведения о public-членах, которые либо объявлены в текущем классе (или интерфейсе), либо унаследованы.

Слайд 26





10. public Constructor[ ] 
10. public Constructor[ ] 
                                 getDeclaredConstructors() 
public Field[ ]  getDeclaredFields() 
public Method[ ]  getDeclaredMethods() 
public Class[ ]  getDeclaredClasses()
С помощью данных методов можно получить данные о членах (не обязательно обозначенных как public) определенной категории, которые объявлены в текущем классе (или интерфейсе), но не унаследованы.
Описание слайда:
10. public Constructor[ ] 10. public Constructor[ ] getDeclaredConstructors() public Field[ ] getDeclaredFields() public Method[ ] getDeclaredMethods() public Class[ ] getDeclaredClasses() С помощью данных методов можно получить данные о членах (не обязательно обозначенных как public) определенной категории, которые объявлены в текущем классе (или интерфейсе), но не унаследованы.

Слайд 27





11. public Field getField(String name)
11. public Field getField(String name)
      public Field getDeclaredField(String name)
С помощью данных методов можно получить сведения о конкретном члене класса.
Первый метод находит public-поле, объявленное в текущем классе или унаследованное от базовых типов, а второй возвращает только такое поле (не обязательно обозначенное как public), которое принадлежит текущему классу. 
Если поле с заданным именем не может быть найдено, выбрасывается исключение типа NoSuchFieldException.
Описание слайда:
11. public Field getField(String name) 11. public Field getField(String name) public Field getDeclaredField(String name) С помощью данных методов можно получить сведения о конкретном члене класса. Первый метод находит public-поле, объявленное в текущем классе или унаследованное от базовых типов, а второй возвращает только такое поле (не обязательно обозначенное как public), которое принадлежит текущему классу. Если поле с заданным именем не может быть найдено, выбрасывается исключение типа NoSuchFieldException.

Слайд 28





public Method getMethod(String name,
public Method getMethod(String name,
                                               Class[]  parameterTypes) 
public Method getDeclaredMethod(String name,   
                                               Class[]  parameterTypes)
С помощью данных методов можно получить информацию о конкретных методах класса,
 в массиве parameterTypes передаются типы параметров метода.
13. public Constructor getConstructor(
                                              Class[]  parameterTypes)
public Constructor getDeclaredConstructor(
                                               Class[]  parameterTypes)
Аналогично предыдущим методам.
Описание слайда:
public Method getMethod(String name, public Method getMethod(String name, Class[] parameterTypes) public Method getDeclaredMethod(String name, Class[] parameterTypes) С помощью данных методов можно получить информацию о конкретных методах класса, в массиве parameterTypes передаются типы параметров метода. 13. public Constructor getConstructor( Class[] parameterTypes) public Constructor getDeclaredConstructor( Class[] parameterTypes) Аналогично предыдущим методам.

Слайд 29





Перед выполнением каждого из рассмотренных выше методов осуществляется проверка полномочий доступа — все методы взаимодействуют с менеджером безопасности, установленным в системе. 
Перед выполнением каждого из рассмотренных выше методов осуществляется проверка полномочий доступа — все методы взаимодействуют с менеджером безопасности, установленным в системе. 
Если менеджер безопасности не подключен, разрешается использование всех методов без каких-либо ограничений. 
Обычно менеджеры безопасности позволяют любому коду вызывать методы для получения информации о public-членах типа— это соответствует правилам нормального уровня доступа, принятым в языке.
Однако возможности обращения к членам, не обозначенным признаком public, как правило, ограниченны — получение подобных данных разрешено коду, обладающему привилегиями внутри системы.
Описание слайда:
Перед выполнением каждого из рассмотренных выше методов осуществляется проверка полномочий доступа — все методы взаимодействуют с менеджером безопасности, установленным в системе. Перед выполнением каждого из рассмотренных выше методов осуществляется проверка полномочий доступа — все методы взаимодействуют с менеджером безопасности, установленным в системе. Если менеджер безопасности не подключен, разрешается использование всех методов без каких-либо ограничений. Обычно менеджеры безопасности позволяют любому коду вызывать методы для получения информации о public-членах типа— это соответствует правилам нормального уровня доступа, принятым в языке. Однако возможности обращения к членам, не обозначенным признаком public, как правило, ограниченны — получение подобных данных разрешено коду, обладающему привилегиями внутри системы.

Слайд 30





Стоит заметить, что менеджеры безопасности способны различать только уровни доступа public и не-public — для распознавания членов, имеющих признак доступа уровня пакета или protected, информации не достаточно. 
Стоит заметить, что менеджеры безопасности способны различать только уровни доступа public и не-public — для распознавания членов, имеющих признак доступа уровня пакета или protected, информации не достаточно. 
   Если доступ запрещен, выбрасывается исключение типа SecurityException.
Рассмотрим пример:
Описание слайда:
Стоит заметить, что менеджеры безопасности способны различать только уровни доступа public и не-public — для распознавания членов, имеющих признак доступа уровня пакета или protected, информации не достаточно. Стоит заметить, что менеджеры безопасности способны различать только уровни доступа public и не-public — для распознавания членов, имеющих признак доступа уровня пакета или protected, информации не достаточно. Если доступ запрещен, выбрасывается исключение типа SecurityException. Рассмотрим пример:

Слайд 31





import Java.lang.reflect.*;
import Java.lang.reflect.*;
public class ClassContents {
   public static void main(String[] args){ 
       try {
        Class с = class.forName(args[0]); 
        System.out.println(c); 
        printMembers(c.getFields());
        printMembers(c.getConstructors()) ;
        printMembers(c.getMethods());} 
     catch(ClassNotFoundException e)  {
       System.out.println(“Неизвестный класс:   " + args[0]); } 
   }
   private static void printMembers(Member[] mems){ 
             for(int i=0; i< mems.length;  i++)  {
                if (mems[i].getDeclaringClass() == Object.class)
                        continue; 
                String decl  = mems[i].toString(); 
                System.out.print("   "); 
                System.out.println(decl); 
             } 
     } 
}
Описание слайда:
import Java.lang.reflect.*; import Java.lang.reflect.*; public class ClassContents { public static void main(String[] args){ try { Class с = class.forName(args[0]); System.out.println(c); printMembers(c.getFields()); printMembers(c.getConstructors()) ; printMembers(c.getMethods());} catch(ClassNotFoundException e) { System.out.println(“Неизвестный класс: " + args[0]); } } private static void printMembers(Member[] mems){ for(int i=0; i< mems.length; i++) { if (mems[i].getDeclaringClass() == Object.class) continue; String decl = mems[i].toString(); System.out.print(" "); System.out.println(decl); } } }

Слайд 32





Классы Field, Constructor,Method 
Классы Field, Constructor,Method 
Каждый из классов Field, Constructor,Method реализует интерфейс Member, в составе которого объявлены три метода, общие для всех категорий членов классов.
Class getDeclaringClass()  
Возвращает объект Class, соответствующий классу, в котором объявлен текущий член.
2. String getName()
Возвращает наименование текущего члена.
3. int getModifiers()
Возвращает модификаторы, используемые в объявлении члена, в виде кодированного целочисленного значения. Значение должно декодироваться с помощью констант и методов класса Modifier
Описание слайда:
Классы Field, Constructor,Method Классы Field, Constructor,Method Каждый из классов Field, Constructor,Method реализует интерфейс Member, в составе которого объявлены три метода, общие для всех категорий членов классов. Class getDeclaringClass() Возвращает объект Class, соответствующий классу, в котором объявлен текущий член. 2. String getName() Возвращает наименование текущего члена. 3. int getModifiers() Возвращает модификаторы, используемые в объявлении члена, в виде кодированного целочисленного значения. Значение должно декодироваться с помощью констант и методов класса Modifier



Похожие презентации
Mypresentation.ru
Загрузить презентацию