Prijavite se za biltene ili da moje RSS feedove primati ažuriranja automatski blog!

Ali žena znati kako to program?



Čini vam se čini…

Starije gospođe u sliku koju vidimo se zove Frances E. Allen, 75 godina, radio je za 40 godina all'IBM i osvojio prestižnu Turing Award za njegov rad na "code prevodiocima."

programmatrice_donna.JPG

RHO… Mislim da ste našli zasluga u radu 50 programera je podnijela svoje muško ;-)

Pozivanje metoda zaštićena od izvana ili uskraćivanju klasa Java: Uvjerite se da je nemoguće?



Ispravan odgovor "ovisi o prisutnosti ili odsutnosti nekog sigurnosti manager."

Doista, kroz odraz je zaista moguce da ide na snagu i ograničenja u Java jeziku, bez prekomjerne poteškoće, ammenochè upravo to nije sigurnost manager, samo glumac u mogućnosti stvarno za upravljanje i na kraju zaustaviti takve snage.

Ali sada nailazimo na primjer da je vrijedan više od mnogih disquisizioni. S obzirom na sljedeće klase:

  net.nothing2hide.test paket; javne klase ClassWithMethodsToHack (privatni void sayHello (String name) (System.out.println ( "Dobar dan"   ime   "! ste pozivom na privatni metoda ");)) 

želimo pokazati kako jednostavno invocabile izvan privatnom metodom "sayHello", kao što sam već predviđa da teško koristiti refleksije:

  net.nothing2hide.test paket; javne klase PrivateMethodInvocationTest (/ ** * Ovaj primjer pokazuje kako klasa * račun zaštićeni na drugi način klasa * * * * @ param args * / javnih statičkih void main (String [] args) (String myName = "David"; Metoda m; pokušajte (/ / Let'access privatni method / / by refleksije.  Možete učiniti isto / / s zaštićena metoda m = ClassWithMethodsToHack.class.getDeclaredMethod ( "sayHello", novi Class [] () String.class); if (m! = NULL) (/ / Let's snagu u Java jezik pristup / / Provjerava na reflektirane metoda.  Napomene / / da ako sigurnosti upravitelja je definirana / / ovo zaobilazno rješenje nije mogla biti dozvoljeno / / i SecurityException mogao biti uskrisi m.setAccessible (true), / / I na kraju, neka je račun je zaštićena metoda m.invoke (novi ClassWithMethodsToHack () , New Object [] (myName ));)) ulov (Exception e) (e.printStackTrace ();))) 



Valid XHTML i CSS. ^ Top


Zatvoriti
Pošalji e-mail