Felder mithilfe von Reflection abrufen

In diesem Beispiel erklären wir anhand eines einfachen Beispiels, wie man mithilfe der Reflektion die Felder einer Klasse erhält. Mit den folgenden Schritten können Sie die öffentlichen und privaten Felder eines Objekts auflisten:

  • Rufen Sie die Klasseninstanz der Klasse ab, deren Felder Sie auflisten möchten. In diesem Beispiel wird die Klasseninstanz der Math-Klasse abgerufen.
  • Rufen Sie die Methode getFields() aus der Klasseninstanz auf, die das Field()-Array zurückgibt, das die öffentlichen Felder enthält.
  • Rufen Sie die Methode getDeclaredFields() aus der Klasseninstanz auf, die das Field()-Array zurückgibt, das alle Felder enthält, unabhängig davon, ob es privat, öffentlich oder standardmäßig ist.

Schauen wir uns dieses Beispiel an, um die Felder der Klasse java.lang.Math aufzulisten:

package javabeat.net.reflection;

import java.lang.reflect.Field;

public class JavaBeatReflectionExample {

	public static void main(String() args) throws Exception {

		// Get the Class instance for Math
		Class<?> mathClass = java.lang.Math.class;

		//Declare Fields class
		Field() refFields;

		// List all the public fields in the Math class
		refFields = mathClass.getFields();
		for (int i = 0; i < refFields.length; i++) {
			System.out.println("Public Field: " + refFields(i));
		}

		System.out.println();

		// List all the fields in the Math class
		refFields = mathClass.getDeclaredFields();
		for (int i = 0; i < refFields.length; i++) {
			System.out.println("Field: " + refFields(i));
		}

	}
}

Ausgabe

Public Field: public static final double java.lang.Math.E
Public Field: public static final double java.lang.Math.PI

Field: public static final double java.lang.Math.E
Field: public static final double java.lang.Math.PI
Field: private static java.util.Random java.lang.Math.randomNumberGenerator
Field: private static long java.lang.Math.negativeZeroFloatBits
Field: private static long java.lang.Math.negativeZeroDoubleBits

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen