一文教你彻底玩懂Java反射
Posted super码王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文教你彻底玩懂Java反射相关的知识,希望对你有一定的参考价值。
反射核心思想的图解
所谓的反射是将一个类中的各个成员映射成相对应的Java类型
反射获取构造方法
我们以 User 类为例进行讲解:
package com.wust.yq;
public class User
//属性字段
private String username = "易齐";
int age = 30;
protected float weight = 60.5F;
public double height = 180.5;
//构造方法
public User()
public User(String name, int age)
//普通方法
@Override
public String toString()
return "User" +
"username='" + username + '\\'' +
", age=" + age +
", weight=" + weight +
", height=" + height +
'';
获取构造方法的步骤:
package com.wust.yq;
import java.lang.reflect.Constructor;
public class Demo01
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException
//1、获取字节码文件
Class userClass = Class.forName("com.wust.yq.User");
//所谓的反射是将一个类中的各个成员映射成相对应的Java类型
//2、需要创建一个对象,(创建对象是一定需要调用构造方法的)
//调用User类中的无参构造方法创建对象
//获取所有的构造方法
// Constructor[] constructors = userClass.getConstructors();
// for (Constructor constructor : constructors)
// System.out.println(constructor);
//
//获取指定构造方法
Constructor constructor1 = userClass.getConstructor();
System.out.println(constructor1);
Constructor constructor2 = userClass.getConstructor(String.class, int.class);
System.out.println(constructor2);
调用构造方法的核心:
package com.wust.yq;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class Demo01
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException
//1、获取字节码文件
Class userClass = Class.forName("com.wust.yq.User");
//所谓的反射是将一个类中的各个成员映射成相对应的Java类型
//2、需要创建一个对象,(创建对象是一定需要调用构造方法的)
//调用User类中的无参构造方法创建对象
//获取所有的构造方法
// Constructor[] constructors = userClass.getConstructors();
// for (Constructor constructor : constructors)
// System.out.println(constructor);
//
//获取指定构造方法
Constructor constructor1 = userClass.getConstructor();
System.out.println(constructor1);
User user = (User) constructor1.newInstance();
System.out.println(user);
运行效果
以上是关于一文教你彻底玩懂Java反射的主要内容,如果未能解决你的问题,请参考以下文章