美文网首页
反射举例

反射举例

作者: UlissesJr | 来源:发表于2019-04-28 17:30 被阅读0次

反射是框架的前提

1.配置文件 pro.properties

className = anli.Person
methodName = eat

2.Person类

package anli;

public class Person {
    String name;
    int age;


    public Person() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }



    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public void eat(){
        System.out.println("eat food!");
    }
    public void eat(String food){
        System.out.println("eat food!" + food);
    }
}

3.反射

package anli;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * 框架类
 */
public class ReflectTest {
    public static void main(String[] args) throws Exception {

        //下面说说传统的做法  1.先创建对象-->实例化 2.调用方法
        /**
         * 下面这种方法有一个弊端,框架应该是一个半成品的软件。前提是,不能改变框架里面的任何代码,也可以创建任意类
         * 的对象,可以执行任意方法。
         */
        Person p = new Person();
        p.eat();

        //可以创建任意类的对象,可以执行任意方法
        //1.加载配置文件
        //1.1创建properties对象
        Properties pro = new Properties();
        //1.2加载配置文件,把他转换成一个集合
        //1.2.1获取class目录下的配置文件
        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        System.out.println(classLoader);//jdk.internal.loader.ClassLoaders$AppClassLoader@512ddf17
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        System.out.println(is);//java.io.BufferedInputStream@511baa65
        pro.load(is);

        //2.获取配置文件中定义的数据
        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");

        //3.加载该类进内存
        Class cls = Class.forName(className);

        //4.创建对象 调用无参构造
        Object obj = cls.newInstance();

        //5.获取方法对象
        Method method = cls.getMethod(methodName);

        //6.执行方法
        method.invoke(obj);//eat food!

    }
}

相关文章

  • 反射举例

    反射是框架的前提 1.配置文件 pro.properties 2.Person类 3.反射

  • Android中常用的反射举例

    随着工作年限的增加,日常工作中的需求已不再是findViewById那么简单了,更多的倾向于框架化,源码化的方向发...

  • golang反射用法举例(注册插件)

    有关golang反射的内容,网上有大量讲述,请自行google——"golang反射三法则" 下面主要反射在实际中...

  • 关于java及Spring环境下反射的使用举例:

    一:java中反射调用举例: 1,写一个类,作为后面被反射调用的类及对方法。类名:TcpProcessServic...

  • CGLib FastClass

    1. 举例 委托类 测试 2. FastClass FastClass不使用反射类(Constructor或Met...

  • Java 反射理解(三)-- Java获取方法信息

    Java 反射理解(三)-- Java获取方法信息 基本的数据类型、void关键字,都存在类类型。 举例如下: C...

  • java 注解

    运行时的注解如何被处理的 [举例] java虚拟机运行api反射机制运行注解 注解语法 注解元素类型. 基本类型....

  • JVM深度剖析:JVM是如何实现反射的?

    反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。 举例...

  • 举例

    很久很久以前有一个小村庄,人们自给自足。村里张三养猪,李四养牛,突然有一天张三想吃牛肉,于是他相了一个办法,用自己...

  • 举例

    在我们探索的道路上, 举例证明, 成为了我们的思维基础, 支撑起了我们的生活, 支撑起我不懂装懂的, 胡**说。 ...

网友评论

      本文标题:反射举例

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