反射的作用

这篇具有很好参考价值的文章主要介绍了反射的作用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


  1. 获取一个类里面所有的信息,获取到了之后,再执行其他的业务逻辑

  2. 结合配置文件,动态的创建对象并调用方法

练习1:

反射的作用,java

public class MyTest {
    public static void main(String[] args) throws IllegalAccessException, IOException {
        
        Student s = new Student("小A", 23, '女', 167.5, "睡觉");
        Teacher t = new Teacher("播妞", 10000);
        //调用方法
        upload(t);
    }

    private static void upload(Object obj) throws IllegalAccessException, IOException {
        //1创建字节码文件
        Class<?> clazz = obj.getClass();

        //2.创建io流
        BufferedWriter bw = new BufferedWriter(new FileWriter("..\\reflect\\a.txt"));
        //获取所有成员变量
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            //暴力反射:因为成员变量有可能是私有化
            field.setAccessible(true);
            //获取变量名
            String name = field.getName();
            //获取变量在对象中记录的值
            Object value = field.get(obj);
            //写入文件
            bw.write(name + "=" + value);
            bw.newLine();
        }
        bw.close();
    }
}

反射的作用,java

练习二:

反射的作用,java

//Student
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void study(){
        System.out.println("学生在学习!");
    }

   //set、get、toString
}
//Teacher
public class Teacher {
    private String name;
    private double salary;

    public Teacher() {
    }

    public Teacher(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }

    public void teach(){
        System.out.println("老师在教书!");
    }

  // set、get、toString
}

//main
public class Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {


        //1.获取properties文件内的数据
        Properties prop = new Properties();
        FileInputStream fis=new FileInputStream("..\\reflect\\Info.properties");
        prop.load(fis);
        fis.close();
        System.out.println(prop);//{method=study, className=reflectDemo.Student}

        //根据键获取值
        String className = (String) prop.get("className");
        String methodName = (String)prop.get("method");

        //根据全类名获取class文件对象
        Class<?> clazz = Class.forName(className);
        //反射获取构造方法,创建一个对象o
        Constructor<?> constructor = clazz.getDeclaredConstructor();
        Object o = constructor.newInstance();
        //反射获取方法,参数是方法名
        Method method = clazz.getDeclaredMethod(methodName);
        //因为不知道方法是不是私有化,所以暴力反射
        method.setAccessible(true);
        //传入对象运行当前方法
        method.invoke(o);//学生在学习!


    }
}

准备一个info.properties文件,以键值对的形式存储
反射的作用,java
以后若要运行其他类里面的方法,在文件内修改数据即可
反射的作用,java
将文件修改为如下,再次运行
反射的作用,java
反射的作用,java

总结:
反射的作用,java文章来源地址https://www.toymoban.com/news/detail-825557.html

到了这里,关于反射的作用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java笔记040-反射/反射机制、Class类

    目录 反射(reflection) 一个需求引出反射 反射机制 Java反射机制原理图 Java反射机制可以完成 反射相关的主要类 反射机制的优点和缺点 反射调用优化-关闭访问检查 Class类 基本介绍 代码解释部分 类加载方法 应用实例:Class02.java 获取Class类对象 代码解释部分 哪些类型有Class对象

    2024年02月09日
    浏览(37)
  • java通过反射创建反射对象三种的方法

    目录 前言: 代码部分: computer类: 1.类名.class创建反射对象: 2.对象.getclass创建反射对象: 3.Class.forName(\\\"\\\")创建反射对象: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态

    2024年02月14日
    浏览(31)
  • 【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)

    Java 反射机制是指在 运行时动态地获取和操作类的信息、调用对象的方法和访问对象的属性的能力 。通过反射,可以在程序运行时分析和修改类的结构、行为和状态。 Java 反射机制提供了以下功能: 获取类的信息:可以获取类的名称、修饰符、父类、实现的接口等。 创建对

    2024年02月09日
    浏览(42)
  • 【Java 基础篇】Java 反射详解

    Java反射是指在运行时动态地获取类的信息,并可以通过该信息来操作类或对象。通过反射,我们可以在运行时获取类的字段、方法、构造函数等信息,并能够动态地创建对象、调用方法、访问和修改字段的值。本文将详细介绍Java反射的概念、原理和使用方法,并提供一些示

    2024年02月09日
    浏览(27)
  • 【Java反射】反射获取Class、Constructor、Field、Method的方式

    如下是相应的获取方式 总结: 首先获取对象的Class,然后通过getXXX方法获取,带Declared可以通过setAccessible获取私有XXX

    2024年02月02日
    浏览(34)
  • 反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)

    // 举例01 public class Reflect{ } 案例:榨汁机榨水果汁,水果分别有果(com.reflect.Apple)、香蕉(Banana)、桔子(Orange)等。 效果如图。 提示: 1、声明(Fruit)水果接口,包含榨汁抽象方法: void squeeze(); /skwi:z/ 2、声明榨汁机(Juicer),包含运行方法: public void run(Fruit f),方法体中,调用f的榨汁方

    2024年02月11日
    浏览(36)
  • 【Java】反射简介,利用反射打印一个类当中的构造函数,方法和属性。

       📝个人主页:哈__ 期待您的关注  我想要通过反射来打印如下效果的类信息。 Student类如下代码所示。  你是否有思路?如果你不了解反射的话,我来给大家简单的介绍一下反射的使用方法。 1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操

    2024年04月10日
    浏览(33)
  • Java反射机制是什么?

    Java 反射机制 是 Java 语言的一个重要特性。 在学习 Java 反射机制前,大家应该先了解两个概念,编译期和运行期。 编译期 是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻译功能,并没有把

    2024年02月12日
    浏览(31)
  • Java反射源码学习之旅

    前段时间组内针对“拷贝实例属性是应该用BeanUtils.copyProperties()还是MapStruct”这个问题进行了一次激烈的battle。支持MapStruct的同学给出了他嫌弃BeanUtils的理由:因为用了反射,所以慢。 这个理由一下子拉回了我遥远的记忆,在我刚开始了解反射这个Java特性的时候,几乎看

    2024年02月11日
    浏览(41)
  • JAVA安全入门之反射

    对于反射这个概念来说,直白的讲就是: 而众所周知 JAVA 是一门静态语言,我们通过反射就可以达到动态的语言的特性。 我们可以类比一下我们的老朋友 PHP ,对于 PHP 来说,一个简单的 webshell 可以完成各种操作,而对于 JAVA 来说,我们就可以用 反射 达到一些动态的特性。

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包