美文网首页
反射 -1 概述

反射 -1 概述

作者: Teemo_fca4 | 来源:发表于2022-03-19 10:58 被阅读0次

Java反射机制

在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为Java的反射机制。

比如:下面的通过配置文件来创建一个类,然后根据配置文件的方法来执行这个方法的这个例子
re.properties

classfullpath=com.hspedu.Cat
method=cry
public class Cat {

    private String name = "招财猫";
    public int age = 10; //public的

    public Cat() {} //无参构造器

    public Cat(String name) {
        this.name = name;
    }

    public void hi() { //常用方法
        //System.out.println("hi " + name);
    }
    public void cry() { //常用方法
        System.out.println(name + " 喵喵叫..");
    }
}
public class ReflectionQuestion {
    public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {

        //根据配置文件 re.properties 指定信息, 创建Cat对象并调用方法hi
        //老韩回忆

        //传统的方式 new 对象 -》 调用方法
//        Cat cat = new Cat();
//        cat.hi(); ===> cat.cry() 修改源码.

        //我们尝试做一做 -> 明白反射

        //1. 使用Properties 类, 可以读写配置文件
        Properties properties = new Properties();
        properties.load(new FileInputStream("D:\\cache\\re.properties"));
        String classfullpath = properties.get("classfullpath").toString();//"com.hspedu.Cat"
        String methodName = properties.get("method").toString();//"hi"
        System.out.println("classfullpath=" + classfullpath);
        System.out.println("method=" + methodName);

        //2. 创建对象 , 传统的方法,行不通 =》 反射机制
        //new classfullpath();

        //3. 使用反射机制解决
        //(1) 加载类, 返回Class类型的对象cls
        Class cls = Class.forName(classfullpath);
        //(2) 通过 cls 得到你加载的类 com.hspedu.Cat 的对象实例
        Object o = cls.newInstance();
        System.out.println("o的运行类型=" + o.getClass()); //运行类型
        //(3) 通过 cls 得到你加载的类 com.hspedu.Cat 的 methodName"hi"  的方法对象
        //    即:在反射中,可以把方法视为对象(万物皆对象)
        Method method1 = cls.getMethod(methodName);
        //(4) 通过method1 调用方法: 即通过方法对象来实现调用方法
        System.out.println("=============================");
        method1.invoke(o); //传统方法 对象.方法() , 反射机制 方法.invoke(对象)
    }
}

相关文章

  • 反射 -1 概述

    Java反射机制 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的...

  • Java中的反射|SquirrelNote

    前言 本篇简介: 反射概述 反射具体功能实现 Android中的反射应用 一、反射(Reflection)概述 1...

  • Java反射机制

    一、Java 反射机制概述 1. 反射概述 Reflection (反射)是被视为 动态语言 (动态性是核心,底...

  • Java反射详细介绍

    反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介...

  • 8.魔术方法(3)

    目录:1.反射概述2.反射相关的函数和方法3.发射的魔术方法 1.反射概述 运行时,区别于编译时,指的是程序被加载...

  • 反射概述

    三种方式 案列演示 代码: package lesson14; public class Demo { }

  • 【Java】【反射】反射概述

    反射概述 类的加载概述:当程序要使用某个类,如果该类还未被加载到内存中,则系统会通过加载、链接、初始化三步来实现对...

  • Java反射基础知识点总结(内含六部博文实例)

    反射(反射概述) A:反射概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;...

  • 反射

    概述 反射机制背景概述 Reflection也就是反射 是Java被视为动态(或准动态)语言的一个关键性质。 反射...

  • Java反射 概述

    反射允许程序在运行期间根据反射API获取任意类的内部信息,及操作类的属性和方法; Java类在加载完成之后,在堆内...

网友评论

      本文标题:反射 -1 概述

      本文链接:https://www.haomeiwen.com/subject/mzugdrtx.html