栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA简易反射demo

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA简易反射demo

简易反射demo

反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)
如图是类的正常加载过程:反射的原理在与class对象。
Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

以下就是一个简易的反射demo

import com.liao.encryption.DesUtil;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


public class Reflection {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        //通过包路径获取Class对象
        Class desUtilClass = Class.forName("com.liao.encryption.DesUtil");
        //获取实例化对象
        DesUtil DesUtil = DesUtil.class.getDeclaredConstructor().newInstance();
        //获取所有的成员方法,包括私有的(不包括继承的)
        Method[] methods = desUtilClass.getDeclaredMethods();
        for (Method method : methods){
            System.out.println(method.getName());
        }
        //利用反射破坏私有机制
        Method privateMethod = desUtilClass.getDeclaredMethod("getEncryptData",String.class);
        privateMethod.setAccessible(true);
        //需要两个参数,一个是要调用的对象(获取有反射),一个是实参
        System.out.println(privateMethod.invoke(DesUtil,"123456"));
    }
}

控制台输出:(打印反射对象中的全部方法名称和调用getEncryptData方法之后对"123456"加密后的结果)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号