反射的常用方法

Posted li1234567980

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射的常用方法相关的知识,希望对你有一定的参考价值。

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * 获取Class对象的方式: 1、Class.forName("类全名"); //加上包名的类名 
 * 2、类名.class
 * 3、new出一个对象后直接用getClass()方法来获取
 * 
 * 注意: 1、同一个字节码文件(*.class)在同一个程序当中只会被加载一次,不论用哪一种方式都得到的Class对象都是同一个。
 *          2、每一个类对应一个字节码文件(*.class)
 * 
 * 
 * Class对象的获取功能 1、获取成员变量们 Field[] getFields() : 获取所有的public成员变量
 * Field getField() : 获取特定的public成员变量(只能是公有)
 * 
 * Field[] getDeclaredFields(): 获取所有的成员变量,不考虑权限修饰符,但在使用非公有变量的时候要用setAccessible(ture)来忽略权限修饰符 
 * Field getDeclaredField()  : 获取特定的public成员变量
 * 
 * 2、获取构造方法们 Constructor<T> getConstructor(类<?>...parameterTypes) 
* Constructor<?>[] getConstructors() * Constructor<T> getDeclaredConstructor(类<?>... parameterTypes) * Constructor<?>[] getDeclaredConstructors() * * 3、获取成员方法们 Method[] getMethods() Method getMethod(String name, 类<?>...parameterTypes) * * Method[] getDeclaredMethods() Method getDeclaredMethod(String name, 类<?>...parameterTypes) * 4、获取类名 getName()
*/ public class Day1 public String name; public String game; private int number; public static void main(String[] args) throws Exception // 1、Class.forName("类全名"); //加上包名的类名 Class<?> class1 = Class.forName("com.hzu.se21090706.reflect.Day1"); // 2、类名.class Class<?> class2 = Day1.class; // 3、new出一个对象后直接用getClass()方法来获取 Day1 day1 = new Day1(); Class<?> class3 = day1.getClass(); // 注意: 1、同一个字节码文件(*.class)在同一个程序当中只会被加载一次,不论用哪一种方式都得到的Class对象都是同一个。 // 2、每一个类对应一个字节码文件(*.class) System.out.println(class1 == class2); System.out.println(class1 == class3); // 两个结果都是true //Field[] getFields() : 获取所有的public成员变量 Field[] fields = class1.getFields(); for (Field field: fields) System.out.println(field); //Field getField() : 获取特定的public成员变量 Field field = class1.getField("name"); System.out.println(field); // Field[] getDeclaredFields(): 获取所有的成员变量, // 不考虑权限修饰符,但在使用非公有变量的时候要用setAccessible(ture)来忽略权限修饰符 System.out.println("========================="); Field[] fields2 = class1.getDeclaredFields(); for (Field field2 : fields2) System.out.println(field2); System.out.println("====================="); Method[] methods = class1.getMethods(); for (Method method : methods) System.out.println(method); @Override public String toString() return "Day1 []"; public int getNumber() return number; public void setNumber(int number) this.number = number;

 

以上是关于反射的常用方法的主要内容,如果未能解决你的问题,请参考以下文章

Java反射常用方法

反射的常用方法

反射中常用的代码

JAVA反射机制

JAVA反射机制

JAVA 反射枚举 Lambda 表达式详解