Java Reflection API: Всичко, което трябва да знаете



Тази статия ще ви запознае с Java Reflection API и също така ще помогне как Reflection работи в Java и какво е точно с демонстрация

Отражение е процес на изследване или модифициране на поведението на времето на изпълнение на клас по време на изпълнение . API за отразяване на Java се използва за манипулиране на класа и неговите членове, които включват полета, методи, конструктор и др. по време на изпълнение. В тази статия ще разберем подробно API за отразяване на Java.

Тази статия ще се фокусира върху следните указатели:





Така че нека започнем с тези указатели в тази статия за Java Reflection API

Къде се използва API за отразяване на Java?

API за отражение се използва главно в:



  • IDE (интегрирана среда за развитие) напр. Eclipse, MyEclipse, NetBeans и др.
  • Debugger
  • Тестови инструменти и т.н.

И така, какво е Class в Java lang odraža пакета?

Клас в java.lang.reflect пакет?

Следва списък на различни Java класове в java.lang.package за внедряване на отражение-

  • Поле : Този клас се използва за събиране на декларативна информация като тип данни, модификатор на достъп, име и стойност на променлива.
  • Метод : Този клас се използва за събиране на декларативна информация като модификатор на достъпа, тип на връщане, име, типове параметри и тип изключения на метод.
  • Строител : Този клас се използва за събиране на декларативна информация като модификатор на достъпа, име и параметри на конструктор.
  • редактиране : Този клас се използва за събиране на информация за определен модификатор на достъп.

Не, нека разгледаме методите на Java Reflection API,



Методи, използвани в java.lang.Class

Метод

Описание

публичен низ getName ()

връща името на класа

публичен статичен клас за име (String className) изхвърля ClassNotFoundException

зарежда класа и връща референцията на клас Class.

public Object newInstance () хвърля InstantiationException, IllegalAccessException

създава нов екземпляр.

публичен булев isInterface ()

проверява дали е интерфейс.

публичен булев isArray ()

проверява дали е масив.

публичен булев isPrimitive ()

проверява дали е примитивно.

публичен клас getSuperclass ()

връща препратка към клас суперклас.

публично поле [] getDeclaredFields () хвърля SecurityException

връща общия брой полета от този клас.

публичен метод [] getDeclaredMethods () хвърля SecurityException

връща общия брой методи от този клас.

публичен конструктор [] getDeclaredConstructors () хвърля SecurityException

връща общия брой конструктори от този клас.

публичен метод getDeclaredMethod (име на низ, клас [] параметърТипове) изхвърля NoSuchMethodException, SecurityException

връща екземпляр на класа на метода.

Нека продължим напред със статия,

Как да получа обекта от клас Class?

Има 3 начина да получите екземпляра на клас Class. Те са както следва:

  • метод forName () от клас Class
  • метод getClass () на клас Обект
  • синтаксисът на .class

метод forName () от клас Class

  • се използва за динамично зареждане на класа.
  • връща екземпляра на клас Class.
  • Трябва да се използва, ако знаете пълното име на класа. Това не може да се използва за примитивни типове.

Нека да видим простия пример за метода forName ().

class Simple {} Test Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Изход:

Просто

Java Reflection: API метод getClass () от клас Обект

Той връща екземпляра на клас Class. Трябва да се използва, ако знаете типа. Освен това може да се използва с примитиви.

class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Прост () тест t = нов тест () t.printName (s)}}

Изход:

Просто

Синтаксисът на .class

Ако даден тип е наличен, но няма екземпляр, тогава е възможно да се получи клас, като се добави „.class“ към името на типа. Той може да се използва и за примитивен тип данни.

class Test {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}

Изход:

булев

Тест

Сега нека продължим с тази статия за API за отразяване на Java

Предимства и недостатъци на използването на Java Reflection API

Предимства на използването на Java Reflection API

  • Функции за разширяемост: Приложението може да използва външни, дефинирани от потребителя класове, като създава екземпляри на разширяеми обекти, използвайки техните напълно квалифицирани имена.
  • Инструменти за отстраняване на грешки и тестване : Дебъгърите използват свойството отражение, за да изследват частни членове в класове.

Недостатъци на използването на Java Reflection API

  • Натоварване на производителността: Отразяващите операции имат по-ниска производителност от своите неотразяващи колеги и трябва да се избягват в раздели на кода, които често се извикват в приложения, чувствителни към производителността.
  • Излагане на вътрешни елементи: Отразяващият код нарушава абстракциите и следователно може да промени поведението с надстройки на платформата.

По този начин стигнахме до края на тази статия за „API за отразяване на Java“. Ако искате да научите повече,вижте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

как да проверите за палиндром в java -

Имате въпрос към нас? Моля, споменете го в раздела за коментари на тази статия и ние ще се свържем с вас възможно най-скоро.