Capitolul 8 - Module. Adnotari si Java Reflection. Securitate Flashcards
Ce avantaje au modulele?
- expunere selectiva (string encapsulation)
- verificare a dependintelor
- modularizarea jdk-ului
Cum declari ca modulul A depinde de modulul B
module A { requires B; }
Ce face instructiunea de mai jos prezenta in fisierul module-info.java?
exports service;
Expune toate clasele publice din pachetul service.
Ce este o dependenta tranzitiva?
Daca am 3 module, B depinde de A, C depinde de B
A
By default dependintele nu sunt tranzitive. (a/f)
adevarat
Ce face instructiunea de mai jos prezenta in module-info.java?
requires static A;
specifica o dependinta optionala. Adica modulul A poate sa existe sau poate sa nu existe.
Explicati instructiunea de mai jos prezenta in module-info.java? module D { provides HelloService with EnglishHelloService; }
In modulul D exista o implementarea a interfetei HelloService in clasa EnglishHelloService.
Practic modulul D expune o implementare a interfetei HelloService in clasa EnglishHelloService.
Explicati instructiunea de mai jos prezenta in module-info.java? module E { requires C; uses HelloService; }
Modulul E depinde de modulul C.
Modulul E cauta implementari ale interfetelei HelloService.
Ce face instructiunea de mai jos ?
ServiceLoader services = ServiceLoader.load(HelloService.class);
pune in lista services toate implementarile clasei HelloService
Cum declar o adnotare?
public @interface MyAnnotation
In ce conditii va functiona
@MyAnnotation(3) ?
In conditiile in case adnotarea are o singura proprietate care cere o valoare si aceasta se numeste exact “value”
Ce tipuri pot avea proprietatile unei adnotari?
- orice tip primitiv
- String
- obiect de tip Class
- array-uri ale tipurilor de mai sus
ce tipuri de adnotari exista si ce reprezinta?
- source - sunt vizibile doar la momentul scrierii codului. Existenta lor se opreste in momentul compilarii
- class - exista in fisierele de tip class dar sunt ignorate de interpretor
- runtime - sunt declarate in fisieru de cod sursa, trec si de compilare si de interpretare.
Ce tip de adnotare este @Override?
Este de tip sursa deoarece e folositoare doar in momentuls scrierii codului si este “inlaturata” de compilator.
cum precizez retention time de runtime?
@Retention
Cum pot sa definesc de mai multe ori aceiasi adnotare pentru un element?
Pot folosi adnotarea container care suporta mai multe adnotari de tip MyAnnotation peste acelasi element de limbaj.
Ca restrictie avem faptul ca trebuie a aiba acelasi Retention si acelasi Target.
Adnotarea mea trebuie marcata ca Repeatable.
Ce este java reflection?
O metoda prin care Java poate isi vada clasele in momentul runtime-ului
Cum se numeste fisierul declarativ de configurare al unui modul?
module-info
Pentru a specifica dependinta unui modul B de un alt modul A, vom declara in fisierul de configurare al modulului B:
requires A;
In mod implicit, toate pachetele dintr-un modul sunt expuse public in afara modulului.
Fals
Daca un modul B depinde de un alt modul A, atunci modulul A nu mai poate depinde de B.
Adevarat
Pentru a declara in fisierul de configurare al unui modul ca modulul respectiv expunde implementarea Y a unei interfete X vom folosi sintaxa:
provides X with Y;
Ce clasa poate fi folosita pentru a obtine implementarile unei interfete date expuse de modulele aplicatiei?
ServiceLoader
Pentru a specifica pe ce elemente de limbaj poate fi pusa o adnotare o adnotam pe aceasta cu:
@Target
Daca vrem ca o adnotare sa existe doar pana la momentul interpretarii codului compilat, dar nu si la runtime, ce parametru trebuie sa specificam pentru @Retention?
CLASS
Pentru a putea pune o adnotare de mai multe ori pe acelasi element de limbaj, trebuie sa fie prezenta meta-adnotarea:
@Repeatable
Care dintre tipurile de data de mai jos nu poate fi folosit pentru proprietatea unei adnotari?
- String
- Math
- Class
- int
- char[]
Math