WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Java: java.lang.reflect.Array.length? (http://www.wcm.at/forum/showthread.php?t=216323)

sesselhocker 24.05.2007 08:58

Java: java.lang.reflect.Array.length?
 
Hallo!

Hab mal wieder eine Frage zu Java:
In der Dokumentation bei java.lang.reflect.Array steht nichts von einem length-Feld (jedoch eine static getLength()), aber jeder benutzt es. Gibt es dafür irgendeine Begründung?

mfg,
sesselhocker

void 24.05.2007 11:36

Re: Java: java.lang.reflect.Array.length?
 
Zitat:

Original geschrieben von sesselhocker
[...] aber jeder benutzt es. [...]
meinst du wirklich "java.lang.reflect.Array.length"?

sesselhocker 24.05.2007 19:05

Hmmm sagen wir mal anders: Wo wird das length-Feld gespeichert (in einer Instanz welcher Klasse)?

mfg, sesselhocker

jak 25.05.2007 10:29

Nur mal aus dem Bauch heraus:
Ich nehme an, daß man jedes Array auf ein Object[] casten kann (in älteren Java Versionen könnte das z.B. bei int[] aber schiefgehen, Stichwort auto boxing/unboxing).

Diese Instanz von Object[] hat dann natürlich eine "length" Eigenschaft.

Die Methoden die java.lang.reflect.Array anbietet sind statische Methoden, die eine Instanz als Argument erwarten.
Ich nehme an, daß dort auch nichts anderes gemacht wird als etwas der Form
Code:

public static int getLength(Object array)
try{
  Object[] obj_arr = (Object[]) array;
  return obj_arr.length;
} catch ClassCastException cce {
  throw new IllegalArgumentException(...);
}
andere Möglichkeit:
if(!array instanceof Object[]) throw new IllegalArgumentException(...);
return ((Object[]) array).length;

Ist allerdings nur meine Annahme. Wenn dich wirklich interessiert wie die Klasse implementiert ist, kannst du dir entweder den Sourcecode herunterladen, oder den JBuilder von Borland verwenden (es gibt einee Personal Edition die gratis ist), der hat einen eingebauten decompiler, mit dem man sich ebenfalls den Java Source anschauen kann.

jak


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag