The Java reflection mechanism is that in the running state, for any class, all properties and methods of this class can be obtained, and for any object, any of its properties and methods can be called.
This function of dynamically obtaining information and dynamically calling object methods at runtime is called Java reflection mechanism. (Recommended Learning: Java Course )
Class Class supports the concept of reflection with the Java.lang.reflet class library with the java.lang.reflet class library. Constructor class (each class implements the Member interface). Objects of these types are created by the JVM at runtime to represent corresponding members of unknown classes.
So you can use Constructor to create new objects, use the get() and set() methods to read and modify fields associated with Field objects, and use the invoke() method to call methods associated with Method objects.
In addition, you can also call convenient methods such as getFields() getMethods() and getConstructors() to return an array of objects representing fields, methods, and constructors. In this way, the information about the anonymous object can be completely determined at runtime, without knowing anything at compile time.
Obtain class information through the reflection mechanism
Create an object through the reflection mechanism. Before creating the object, you must obtain the constructor object of the object and create the corresponding class through the constructor object. Example.
The following code creates an object instance with no participation and parameters during runtime. Since the getConstructor() method and the newInstance() method throw a lot of exceptions (you can view them through the source code), here is the abbreviation of directly throwing an Exception, the same below.
package com.jas.reflect; import java.lang.reflect.Constructor; public class ReflectTest { public static void main(String[] args) throws Exception { Class clazz = null; clazz = Class.forName("com.jas.reflect.Fruit"); Constructor<Fruit> constructor1 = clazz.getConstructor(); Constructor<Fruit> constructor2 = clazz.getConstructor(String.class); Fruit fruit1 = constructor1.newInstance(); Fruit fruit2 = constructor2.newInstance("Apple"); } } class Fruit{ public Fruit(){ System.out.println("无参构造器 Run..........."); } public Fruit(String type){ System.out.println("有参构造器 Run..........." + type); } }
Output:
无参构造器 Run........... 有参构造器 Run...........Appl
The above is the detailed content of What is reflection mechanism in java. For more information, please follow other related articles on the PHP Chinese website!