🗊 Презентация Поняття про відображення (reflection, інтроспекція)

Нажмите для полного просмотра!
Поняття про відображення (reflection, інтроспекція), слайд №1 Поняття про відображення (reflection, інтроспекція), слайд №2 Поняття про відображення (reflection, інтроспекція), слайд №3 Поняття про відображення (reflection, інтроспекція), слайд №4 Поняття про відображення (reflection, інтроспекція), слайд №5 Поняття про відображення (reflection, інтроспекція), слайд №6 Поняття про відображення (reflection, інтроспекція), слайд №7 Поняття про відображення (reflection, інтроспекція), слайд №8 Поняття про відображення (reflection, інтроспекція), слайд №9 Поняття про відображення (reflection, інтроспекція), слайд №10 Поняття про відображення (reflection, інтроспекція), слайд №11 Поняття про відображення (reflection, інтроспекція), слайд №12 Поняття про відображення (reflection, інтроспекція), слайд №13 Поняття про відображення (reflection, інтроспекція), слайд №14 Поняття про відображення (reflection, інтроспекція), слайд №15

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

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


Слайд 1


Reflection
Описание слайда:
Reflection

Слайд 2


Поняття про відображення (reflection, інтроспекція) Засоби, які дозволяють під час виконання програми отримувати інформацію про класи, їх поля і...
Описание слайда:
Поняття про відображення (reflection, інтроспекція) Засоби, які дозволяють під час виконання програми отримувати інформацію про класи, їх поля і методи Більш загально – для динамічної роботи з кодом. Наприклад – створити екземпляр класу, назва якого вводиться в рядку. Базовий інструмент – клас Class. Додаткові можливості – пакет java.lang.reflect.

Слайд 3


Отримання інформації про клас – базові можливості String s = "qwerty"; Class kl = s.getClass(); System.out.println (kl.getSimpleName() +...
Описание слайда:
Отримання інформації про клас – базові можливості String s = "qwerty"; Class kl = s.getClass(); System.out.println (kl.getSimpleName() + " is a subclass of " + kl.getSuperclass().getSimpleName());

Слайд 4


Три способи отримання екземпляру класу Class метод getClass() класу Object; виклик статичного методу Class.forName(ім’я класу) – завантаження класу...
Описание слайда:
Три способи отримання екземпляру класу Class метод getClass() класу Object; виклик статичного методу Class.forName(ім’я класу) – завантаження класу за іменем; T.class, де Т-деякий тип.

Слайд 5


Приклад: отримання методів класу import java.io.*; import java.lang.reflect.*; public class reflection { public static void main(String[] args)...
Описание слайда:
Приклад: отримання методів класу import java.io.*; import java.lang.reflect.*; public class reflection { public static void main(String[] args) throws Exception { BufferedReader br=new BufferedReader(new InputStreamReader (System.in)); System.out.println("Enter class name"); String clName=br.readLine(); Class cl = Class.forName(clName); Method[] M = cl.getMethods(); for (Method m:M) {System.out.println(m);} } }

Слайд 6


Різниця між getMethods та getDeclaredMethods Перший повертає всі публічні методи з урахуванням успадкування, а другий – всі методи, визначені в цьому...
Описание слайда:
Різниця між getMethods та getDeclaredMethods Перший повертає всі публічні методи з урахуванням успадкування, а другий – всі методи, визначені в цьому класі. Задача: вивести список всіх методів, які визначені в класі, але лише публічних.

Слайд 7


Динамічне завантаження класу та створення екземпляру public static void main(String[] args) throws Exception { Class c =...
Описание слайда:
Динамічне завантаження класу та створення екземпляру public static void main(String[] args) throws Exception { Class c = Class.forName("dinload.A"); A a = (A) c.newInstance(); a.inform(); } } class A { static { System.out.println("A is initialized"); } A() { System.out.println("Instance created"); } void inform() { System.out.println(“ You can create dinamic instance"); } }

Слайд 8


Або: Class cl = Kl.class; Kl ekz = cl.newInstance(); ekz.metod();
Описание слайда:
Або: Class cl = Kl.class; Kl ekz = cl.newInstance(); ekz.metod();

Слайд 9


Як це зробити більш гнучко? Треба уникнути зведень до класу, який за ідеєю прикладу має бути невідомим. Крім того, і ім’я методу може бути невідомим...
Описание слайда:
Як це зробити більш гнучко? Треба уникнути зведень до класу, який за ідеєю прикладу має бути невідомим. Крім того, і ім’я методу може бути невідомим на етапі компіляції. Як це зробити?

Слайд 10


Злам приватності: клас class Bastion { private String msg = "You cannot change this string"; public String getMsg() { return msg; } private...
Описание слайда:
Злам приватності: клас class Bastion { private String msg = "You cannot change this string"; public String getMsg() { return msg; } private void metod() { System.out.println("This method is private!"); } }

Слайд 11


Злам приватності: власне злам Bastion b = new Bastion(); System.out.println("Our field is: "+b.getMsg()); //b.str="Ku-ku"; - це...
Описание слайда:
Злам приватності: власне злам Bastion b = new Bastion(); System.out.println("Our field is: "+b.getMsg()); //b.str="Ku-ku"; - це не компілюється Class bk = b.getClass(); Field fld = bk.getDeclaredField("msg"); fld.setAccessible(true); fld.set(b, "Das ist ku-ku"); fld.setAccessible(false); System.out.println("The cracked field is: "+b.getMsg()); //b.inform(); - це не компілюється Method m = bk.getDeclaredMethod("metod"); m.setAccessible(true); m.invoke(b); m.setAccessible(false);

Слайд 12


Вказівники на функцію: клас з функцією… class Ext { private int Pole; public Ext(int Pole) { this.Pole = Pole; } public void metod() {...
Описание слайда:
Вказівники на функцію: клас з функцією… class Ext { private int Pole; public Ext(int Pole) { this.Pole = Pole; } public void metod() { System.out.println("The field of this object is "+Pole); } }

Слайд 13


… і виклик функції Method m = Ext.class.getMethod("metod"); Ext ext = new Ext(50); m.invoke(ext);
Описание слайда:
… і виклик функції Method m = Ext.class.getMethod("metod"); Ext ext = new Ext(50); m.invoke(ext);

Слайд 14


Ще один приклад: виведення таблиці значень функції Method square = Ext.class.getMethod("square", double.class); Method sqrt =...
Описание слайда:
Ще один приклад: виведення таблиці значень функції Method square = Ext.class.getMethod("square", double.class); Method sqrt = Math.class.getMethod("sqrt", double.class); … for (double x=from; x

Слайд 15


Конструктивна приватність Вправа: Написати консольне застосування, яке за допомогою Reflection (виклик newInstance) створює екземпляр класу,...
Описание слайда:
Конструктивна приватність Вправа: Написати консольне застосування, яке за допомогою Reflection (виклик newInstance) створює екземпляр класу, конструктор якого описаний як private.



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