Überprüfen Sie, ob der java.lang.reflect.Field-Typ ein Byte-Array ist

7

Ich denke nicht viel darüber nach, also könnte diese Frage offensichtlich sein. Für z.B. Ich habe eine Klasse:

%Vor%

Ich versuche zu überprüfen, ob das Feld contents eine Instanz von Byte-Array ist. Was ich versucht habe:

%Vor%

Die Ausgabe dieses Codes lautet: class [B . Ich sehe, dass Byte-Array gefunden wird, aber wenn ich das tue:

%Vor%

Diese Bedingung ist niemals true . Warum das? Und wie überprüft man, ob das Objekt Felder vom Typ byte[] enthält?

    
Paulius Matulionis 22.10.2012, 09:47
quelle

5 Antworten

15

array instanceof byte[] überprüft, ob array ein Objekt vom Typ byte[] ist. Aber in Ihrem Fall array ist kein byte[] , es ist ein Objekt vom Typ Class , das byte[] darstellt.

Sie können auf eine Class zugreifen, die einen Typ T als T.class darstellt. Daher benötigen Sie folgende Überprüfung:

%Vor%     
axtavt 22.10.2012, 09:49
quelle
7

Wenn das Array nur eine Klasse ist, wird instanceof Class wahr sein.

Wenn Sie den Typ eines Felds überprüfen möchten, können Sie

verwenden %Vor%     
Peter Lawrey 22.10.2012 09:49
quelle
3

Versuchen Sie Folgendes:

%Vor%     
Jesper 22.10.2012 09:51
quelle
1

Siehe dieses nützliche Tutorial von Oracle

  

Array-Typen können durch Aufrufen von Class.isArray ()

identifiziert werden
    
Brian Agnew 22.10.2012 09:49
quelle
0

Wenn Sie versuchen:

%Vor%

druckt byte[] . Aber @ axtavts Antwort ist besser.

    
assylias 22.10.2012 09:48
quelle

Tags und Links