(简约版)JAVA反射机制的运用了解

本文介绍了Java的反射机制,它允许程序在运行时检查和操作类、对象、方法和属性。文章通过Beer类为例,展示了如何使用Class、Constructor、Field和Method类来实现反射,包括获取Class对象、创建对象、访问方法和属性以及构造器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 啥是反射机制?

反射机制就是java语言在运行时拥有一项自观的能力。

  1. 如何实现

1.认识实现的对象

Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;

Class:类对象

Constructor : 类的构造器对象

Field:类属性的对象

Method:类方法的对象

  1. 如何具体实现:

package pojo;

public class Beer {
    private int did;
    String age;
    public String name;

    private void Eat(){
        System.out.println("吃吃吃");
    }

     void Sleep(){
        System.out.println("睡睡睡");
    }

    public void say(){
        System.out.println("吼吼吼");
    }
}

package test;

import pojo.Beer;

import java.lang.reflect.Method;

public class test {
    public static void main(String[] args ) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Beer b=new Beer();
        b.say();

//        我们可以直接通过对象名 或者类名
//        在运行阶段获取Class对象(原生所在类)
//        1.通过已有对象 来反向获取-》需要提前创建对象,
        Class cla=b.getClass();
        System.out.println("class:"+cla);
//        2.通过类名直接获取-》提前导包 如果不引入包则报错
        Class cla1=Beer.class;
//        3.通过forName-》更能体现反射机制 不需要和其他包提前建立联系 只需要通过字符串提前去反射即可
        Class cla2=Class.forName("pojo.Beer");
        Object ob=cla2.newInstance();//使用反射来创建对象
        //new getBean class.newInstance;反射生成
        Beer d1=(Beer) ob;


        cla.getPackage().getName();//获取到包名
        cla.getSimpleName();//获取类名
        cla.getName();//获取到完善的类名

        //获取方法
        Method[] methods=cla.getMethods();//获取本类自己声明的方法 包括私有和被保护的
        Method[] methods1=cla.getDeclaredMethods();//

        for (Method m:methods) {
            System.out.println(m.getName());

        }

        //获取反射类中的成员变量(属性)
        cla.getFields();//能够获取所有公开的成员变量 包括继承来的、
        cla.getDeclaredFields();//获取所有自己声明的成员变量
        //自行输出测试 看一下长啥样


        //获取构造方法
        cla.getConstructors();//获取所有能访问到的 包括继承父类
        cla.getDeclaredConstructors();//只有自己定义的构造方法


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值