Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

java:private-field-access 2008/01/23 14:04 java:private-field-access 2020/01/22 20:59 aktuell
Zeile 1: Zeile 1:
-====== Zugriff auf private Felder/Variablen anderer Klassen ======+[[java|Java - Allgemein]]\\ 
 +====== Zugriff auf private Felder/Variablen anderer Klassen (Reflection) ======
Manchmal ist es extrem hilfreich, wenn man auf private Felder anderer Klassen (insbesondere Bibliotheken) zugreifen kann. Theoretisch kann der SecurityManager dies unterbinden. Praktisch ist das aber fast nie der Fall. Manchmal ist es extrem hilfreich, wenn man auf private Felder anderer Klassen (insbesondere Bibliotheken) zugreifen kann. Theoretisch kann der SecurityManager dies unterbinden. Praktisch ist das aber fast nie der Fall.
Natürlich sollte einem beim Verwenden eines solchen Hacks bewusst sein, dass diese Art von Zugriff zu Problemen führen kann. Insbesondere könnte in einer späteren Version einer gedachten Libary die Variable nicht mehr existieren oder umbenannt sein.\\ Natürlich sollte einem beim Verwenden eines solchen Hacks bewusst sein, dass diese Art von Zugriff zu Problemen führen kann. Insbesondere könnte in einer späteren Version einer gedachten Libary die Variable nicht mehr existieren oder umbenannt sein.\\
 +\\
 +<html>
 +  <script type="text/javascript"><!--
 +      google_ad_client="pub-9681858985507948";
 +      google_ad_width = 468;
 +      google_ad_height = 60;
 +      google_ad_format = "468x60_as";
 +      google_ad_type = "text";
 +      google_ad_channel = "";
 +      google_color_border = "cccccc";
 +      google_color_bg = "FFFFFF";
 +      google_color_link = "1d2d8c";
 +      google_color_text = "000000";
 +      google_color_url = "1d2d8c";
 +      //-->
 +  </script>
 +  <script type="text/javascript"
 +      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
 +  </script>
 +</html>
 +\\
 +\\
Im folgenden Beispiel wird auf die privaten Felder von MyClass zugegriffen.\\ Im folgenden Beispiel wird auf die privaten Felder von MyClass zugegriffen.\\
<code java> <code java>
Zeile 28: Zeile 51:
           
      // Private Felder auslesen und anschließend neu setzen:       // Private Felder auslesen und anschließend neu setzen:
-      try{+      try {
        Integer numObj = (Integer)theIntegerField.get(myClass);         Integer numObj = (Integer)theIntegerField.get(myClass);
        System.out.println(numObj);                                    // 123         System.out.println(numObj);                                    // 123
Zeile 38: Zeile 61:
        theIntField.setInt(myClass, ++num);         theIntField.setInt(myClass, ++num);
        System.out.println(myClass.getNum());                          // 457         System.out.println(myClass.getNum());                          // 457
-      }catch (IllegalArgumentException e){+      }catch (IllegalArgumentException e) {
        e.printStackTrace();         e.printStackTrace();
-      }catch (IllegalAccessException e){+      }catch (IllegalAccessException e) {
        e.printStackTrace();         e.printStackTrace();
      }       }
Zeile 57: Zeile 80:
  }   }
} }
 +</code>\\
 +\\
 +\\
 +Stichworte:\\
 +<code>
 +private Membervaribalen Variablen Felder Zugriff Reflection
</code> </code>

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007