ПредишенСледващото

Reflection (Отражение) - Основи

По мое мнение, отражението Java прилича на електроенергия в живота на един обикновен човек - всички те са много активни, но тя наистина работи, много малко хора знаят, въжетата и това незнание не се намесва. Налице е общо разбиране - и достатъчно.
Отражение като инструмент, а идеята е от изключително значение за разбирането на огромното количество технологични пакети и други неща. Следователно, за да се разбере какво е това и се запознаят с основите на това е от решаващо значение.
От друга страна, използването на пряко отражение API (набор от функции за размисъл) в живота на един обикновен програмист, който се занимава с приложни системи, е доста рядко.
Т.е. Знам какво е да се разберат основите и да се има предвид плюсовете и минусите - това е необходимост. Необходимо ли е да се помни, за да старателно набор от функции. Малко вероятно е, че често ще ги използвате. По мое мнение, по-добро разбиране на размисъл и да знаят къде да отидат, за повече информация. Въпреки че, разбира се, много зависи от вашия конкретен проект - тя може да ви бъде само "запълнят" кода с помощта на Reflection API. и ще стигнете до това разбиране на проблема, което е рядкост сред професионалистите. Кой знае.

Така че това, което е отражение и какви проблеми той може да реши?
Ако вземем техническите възможности, на първите две групи за действие могат да бъдат разграничени:

  1. Можете да намерите цялата информация за този клас - методи, полета, конструктори, константи, superclasses, реализирани интерфейси от клас.
  2. Можете да работите с един клас (обект), а именно - създаване на обект от клас, извършване на методи, които получават или да зададете стойности за тези полета.

Ако разширим списъка, а след това е, което ви позволява да размисъл:

  1. Научете / идентифициране на класа на обекта
  2. Получаване на информация за модификатори класове, полета, методи, константи, конструктори и superclasses.
  3. Разберете кои методи принадлежат реализирани интерфейси / интерфейси.
  4. Създаване на инстанция на класа, името на класа не е известна, докато по време на работа.
  5. Вземи и задайте стойността на поле обект по име.
  6. Обадете се на метода на името на обекта.

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

Използване на програма за размисъл може да доведе до напълно непознати метод напълно непознати клас вече по време на неговото изпълнение. Към момента на съставяне на този клас, и метода, че е напълно неизвестен. Отражение се използва в почти всички съвременни Java технологиите. Трудно е да си представим, ще бъде в състояние да Java като платформа за постигане на такова огромно разпространение, без размисъл. Това щеше да е вероятно провали.

Първото запознаване

Да разгледаме прост възможност за използване на размисъл. Вашата кандидатура е планирано (или по друг начин), трябва да извършат определена метод за определен клас. Например, трябва да изтеглите актуализации на финансова информация.
До известно време тази информация е била в базата данни, както и метода на класа може да тази информация от тази база данни, за да получи.
Ако проектът се провежда като се вземе предвид възможността за смяна на класа, е вероятно, че интерфейсът е определен и е направено в изпълнение на един клас за базата данни. Нещо като тази опция.

Самата структура, който е получен от взаимодействието може да бъде някои клас

FinanceInfoBuilder строител = (FinanceInfoBuilder) т. newInstance ();

newInstance () метод дава възможност да се създаде обект от съответния клас. Но е важно да се отбележи - това обаждане е възможно само ако класът има конструктор без параметри. Ако такъв конструктор в класа си не е налице, за да се възползват от такъв прост разговор не е - ще трябва да се действа по-трудно. Така че има конструктор без параметри - това е добра идея.
Както вероятно сте се досетили, обаждането връща клас Object обект, и ние трябва да го донесе на ръка до желания тип. защото ние разчитаме на "честността" на нашия клас, което е отразено и в интерфейса на подкрепа FinanceInfoBuilder, ние сме с него и да даде нашия обект.
Сега, за да промените класа, за да изтеглите финансови резултати само да редактирате builder.properties файл. Нищо повече. Това е последвано от буря продължително аплодисменти.

проект NetBeans може да бъде изтеглен тук: FinanceExample

клас клас

Разгледахме опцията клас обувка и създаването на желания обект класа ни. В действителност, тази опция е използването на размисъл е много чести. Така че аз силно препоръчвам да се помни това решение. Сега ще видим как е възможно не само да се създаде желания обект клас, но също така и начина, по който може да се отнася до полета или методи.
Ние определяме един прост клас за нашите експерименти

проект NetBeans може да бъде изтеглен тук: SimpleReflection

Свързани статии

Подкрепете проекта - споделете линка, благодаря!