User Tools

Site Tools


Problem constructing authldap
laboratoare:reflection
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:reflection [2015/01/05 13:02]
cosmin.boaca [Exerciții]
laboratoare:reflection [2015/01/07 00:28] (current)
cosmin.boaca [Java Native Interface (JNI)]
Line 19: Line 19:
  
 <code java NativeMethodDeclaration.java>​ <code java NativeMethodDeclaration.java>​
-private int native_add(int num1, int num2);+package laborator;​ 
 + 
 +class NativeTest { 
 +     private int nativeAdd(int num1, int num2); 
 +}
 </​code>​ </​code>​
  
-Declararea și definirea funcției ​in C este ceva mai complicată și nu va fi prezentată.+Functia ​in C/C++ trebuie sa aiba urmatoarea definite 
 + 
 +<code C> 
 +extern "​C"​ { 
 +Java_laborator_NativeTest_nativeAdd(JNIEnv *env, JObject obj, Jint a, Jint b) { 
 +     ​return a + b; 
 +
 +
 +</​code>​ 
 + 
 +Numele metodei in C derivă din numele fully qualified al metodei din Java. (nume_pachet.nume_clasa.nume_metoda). Pentru metoda de mai sus, acest nume este laborator.NativeTest.nativeAdd. 
 +Numele metodei din C se formeaza prin concatenarea Java_ la numele metodei în care . este inlocuit cu _ . 
 +Metoda ​va fi compilată într-o bibliotecă partajată (shared_library) cu linking de C (extern "​C"​),​ acest lucru fiind necesar pentru a putea fi găsită corect din Java. 
  
 ==Reflection== ==Reflection==
Line 193: Line 210:
  
    - **(2p)** Creati clasa ''​ReflectionDummy'',​ o clasă care va conține 3 membri de tipul int, unul private, unul protected și unul public. Creați un obiect din această clasă și setați valorile membrilor folosind API-ul pentru Reflection. Folosiți metoda ''​getDeclaredFields''​ din clasa ''​Class'',​ și metodele ''​setAccessible''​ respectiv ''​set''​ din clasa ''​Field''​.    - **(2p)** Creati clasa ''​ReflectionDummy'',​ o clasă care va conține 3 membri de tipul int, unul private, unul protected și unul public. Creați un obiect din această clasă și setați valorile membrilor folosind API-ul pentru Reflection. Folosiți metoda ''​getDeclaredFields''​ din clasa ''​Class'',​ și metodele ''​setAccessible''​ respectiv ''​set''​ din clasa ''​Field''​.
-   - **(10p)** Acest task va urmări crearea unei clase ce poate rula teste având o funcționalitate de bază asemănătoare cu aceea a framework-ului Junit. Se vor folosi ​metodele ​''​getMethods''​ și ''​getAnnotations''​.+   - **(10p)** Acest task va urmări crearea unei clase ce poate rula teste având o funcționalitate de bază asemănătoare cu aceea a framework-ului Junit. Se vor folosi ​metodela ​''​Modifier.isPublic'' ​a clasei ''​Modifier'',​ cât și metodele ''​getGenericReturnType'',​ ''​getGenericParameterTypes'', ​''​getAnnotations'' ​ale clasei ''​Method''​. Puteți folosi orice alte metode considerați din API.
       * **(2p)** Definirea adnotărilor ''​@Test'',​ ''​@Before'',​ ''​@After''​.       * **(2p)** Definirea adnotărilor ''​@Test'',​ ''​@Before'',​ ''​@After''​.
       * **(2p)** Identificarea metodelor cu adnotarea ''​@Test''​. Toate aceste metode trebuie să aibă tipul de retur ''​boolean''​ și să nu primească parametri. (Vor returna true dacă testul trece sau false daca pică). Programul trebuie să arunce excepție dacă există vreo metodă cu adnotarea ''​@Test''​ care nu respectă semnătura și trebuie să ia în considerare doar metodele publice.       * **(2p)** Identificarea metodelor cu adnotarea ''​@Test''​. Toate aceste metode trebuie să aibă tipul de retur ''​boolean''​ și să nu primească parametri. (Vor returna true dacă testul trece sau false daca pică). Programul trebuie să arunce excepție dacă există vreo metodă cu adnotarea ''​@Test''​ care nu respectă semnătura și trebuie să ia în considerare doar metodele publice.
Line 207: Line 224:
        ​failed : numărTesteEșuate        ​failed : numărTesteEșuate
        ​errors : numărTesteEronate        ​errors : numărTesteEronate
 +       
 +
laboratoare/reflection.1420455777.txt.gz · Last modified: 2015/01/05 13:02 by cosmin.boaca