Home Web Front-end JS Tutorial Chuanzhi Podcast Learning java reflection_javascript skills

Chuanzhi Podcast Learning java reflection_javascript skills

May 16, 2016 pm 06:41 PM
java reflection

In addition, Teacher Bi explained the reflection mechanism to us. Although we may not necessarily involve reflection in the development process in the future, reflection is indeed a powerful tool in Java. It allows us to create flexible code that can be executed at runtime. Assembly without source representative linking between components. For example, in the Tomcat class loader, this mechanism is used by many frameworks.
1. What is reflection
The concept of reflection was first proposed by Smith in 1982. It mainly refers to the ability of a program to access, detect and modify its own state behavior. Reflection is one of the features of the Java program development language. It also allows the running Java program to check itself, or "self-audit", and directly operate the internal properties of the program.
2. Classes required for java reflection
1.Class class: Its instances represent classes and interfaces in the running java application
2.Constructor class: Provides a single constructor method for a class information and access to him.
3.Method class: Provides information about a single method of a class or interface
4.Array class: Provides static methods for dynamically creating arrays or accessing arrays.
5.Field class: Provides information about the properties of a class or interface, as well as dynamic access rights to it.
3. The function of reflection
We have listed the relevant classes above, so what can we do specifically with these classes?
1) Get the Class object of the specified class
Method 1, through the object.getClass. (Example: Person p; Class c=p.getClass();)
Method 2, through the forName method of the Class class (Example: Class c=Class.forName(class name);)
Method 3: Obtain through type name.class (Class c = int.class)
2) Construct an object of any class at runtime, The steps are as follows:
① Create its object based on the class name
② Return the newly created object
l Using the no-argument constructor, you only need to use the newInstance method of the class object.
Class c=Class.forName(class name); Person p =(Person)c.newInstance;
l Use the parameterized constructor, the steps are as follows:
① Obtain the object of the specified class (same as above)
② Obtain the constructor class object that meets the requirements of the specified parameters through the Class object
Constructor cons = c.getConstructor(String.class)
③ Call the newInstance method of the specified Constructor object and pass in the corresponding parameters value to create the object.
Person p = (Person) cons.newInstance ("Zhang San");
3) Call the method of any object at runtime, and you can even call the private method through reflection
① Get the specified class Object (same as above)
② Create an instance as required
③ Obtain the instance of Method through getDeclaredMethods of the Class object (you can select different methods as needed), and call the method through the invoke method
Method m=c.getDeclaredMethods( "setName", String.class);
returnvalue = m.invoke(p,"zhangsan");
Note: If it is a private method, you can first call setAccessible(true) of the Method object corresponding to this method. Cancel the security check on this method
4) Call the properties of any object at runtime
① Obtain the object of the specified class (same as above)
② Create an instance as required
③ Pass the getDeclaredField of the Class object (You can choose different methods as needed) Obtain an instance of the Field class, modify the value of the specified object through the Set method, and get the value of the object.
Field f =c.getDeclaredField("name");
f.set(p,"Zhang San"); System.out.println(f.get(p));

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Square Root in Java Square Root in Java Aug 30, 2024 pm 04:26 PM

Square Root in Java

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Perfect Number in Java

Random Number Generator in Java Random Number Generator in Java Aug 30, 2024 pm 04:27 PM

Random Number Generator in Java

Armstrong Number in Java Armstrong Number in Java Aug 30, 2024 pm 04:26 PM

Armstrong Number in Java

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Weka in Java

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Smith Number in Java

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

Java Spring Interview Questions

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Break or return from Java 8 stream forEach?

See all articles