Java基础——反射(基本使用,hashmap转javabean)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研)
记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结+网上借鉴)
希望大家能一起发现问题和补充,也欢迎讨论👏👏👏

反射

通过反射你可以在运行时获取任意一个类的所有属性和方法,你还可以调用这些方法和属性。反射机制一般用来解决Java 程序运行期间,对某个实例对象一无所知的情况下,如何调用该对象内部的方法问题。

反射原理

Java反射底层是基于JVM实现的。JVM 加载完一个类后,在堆内存中就会产生该类的一个 Class 对象,一个类在堆内存中最多只会有一个 Class 对象,这个Class 对象包含了该类的完整结构信息,我们通过这个 Class 对象便可以得到该类的完整结构信息

Class类

Class类是一个特殊的类,它用于表示JVM运行时的类或接口的信息。你可以把它看作是一个普通的类,但它描述的是所有的类的公共特性。Class类是一个反射工具,能提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。

基本使用

1. 获取类对象
  • 使用类的class属性
class Person {
   
   
    private String name;
    private int age;
    // 构造方法、getter和setter方法等省略
}
public class Main {
   
   
    public static void main(String[] args) {
   
   
        Class<?> personClass = Person.class;
    }
}
  • 使用对象的getClass()方法
Person person = new Person();
Class<?> personClass = person.getClass();
  • 使用Class.forName()方法

可以通过类的全限定名(包括包名)来获取类对象

try {
   
   
    Class<?> personClass = Class.forName("com.example.Person");
} catch (ClassNotFoundException e) {
   
   
    e.printStackTrace();
}
2. 获取类的构造函数、方法、字段
  • 获取构造函数

通过Class实例获取Constructor的方法如下:

  • getConstructor(Class...):获取某个publicConstructor

  • getDeclaredConstructor(Class...):获取某个Constructor

  • getConstructors():获取所有publicConstructor

  • getDeclaredConstructors():获取所有Constructor

  • 获取方法

  • Method getMethod(name, Class...):获取某个publicMethod(包括父类)

  • Method getDeclaredMethod(name, Class...):获取当前类的某个Method(不包括父类)

  • Method[] getMethods():获取所有publicMethod(包括父类)

  • Method[] getDeclaredMethods():获取当前类的所有Method(不包括父类)

public class Main {
   
   
    public static void main(String[] args) throws Exception {
   
   
        Class stdClass = Student.class;
        // 获取public方法getScore,参数为String:
        System.out.println(stdClass.getMethod("getScore", String.class));
        // 获取继承的public方法getName,无参数:
        System.out.println(stdClass.getMethod("getName"));
        // 获取private方法getGrade,参数为int:
        System.out.println(stdClass.getDeclaredMethod("getGrade"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值