java反射

package Reflection;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

public class Reflection01 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
        Properties properties = new Properties();
        properties.load(new FileReader("mysql.properties"));
        String a = properties.getProperty("class");
        String b = properties.getProperty("method");
        System.out.println(a+"----------------"+b);

        //1.加载类,返回class类型的对象
        Class cal = Class.forName(a);
        //2.通过cla可以得到你加载的类,Reflection.Cat的对象实例
        //可以进行强制转换
        Object o = cal.newInstance();
        System.out.println("o的运行类型="+o.getClass());
        //3.通过cal对象可以得到你加载类的Reflection.Cat的and方法对象
        //在反射的世界里万物皆是对象
        Method method = cal.getMethod(b);//可以把方法当作对象
        //4.可以通过method调用方法:即通过方法对象来实现调用方法
        method.invoke(o);//传统方法:对象名.方法  //反射机制 方法.invoke(对象)。
        //java.lang.reflect.field代表类的成员变量field代表某个类的成员变量
        //getField不能得到私有的属性
        Field field = cal.getField("age");//传统方法 对象.成员变量 //反射 成员变量.get(对象)
        System.out.println(field.get(o));
        //java.lang.reflect.Constructor:代表类的构造方法 Constructor表示构造器
        Constructor constructor = cal.getConstructor();//()中可以指定构造器参数类型 //Constructor constructor = cal.getConstructor();返回无参构造器
        System.out.println(constructor);
        Constructor constructor1 = cal.getConstructor(String.class);//这里老师传入的String.class,就是String类型的class对象
        System.out.println(constructor1);

    }
}

作者:freps

出处:https://www.cnblogs.com/freps/p/18459277

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   LL。。。  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示