首页 > 其他分享 >反射1 - 基础

反射1 - 基础

时间:2023-01-05 14:35:09浏览次数:42  
标签:反射 aClass -- 基础 获取 权限 TODO public

反射

对象获取自身的类对象

再通过类对象获取类中的属性、方法、权限等

public class _Reflect {
    public static void main(String[] args) throws NoSuchFieldException, NoSuchMethodException {

        User user = new Child();
        user.test1();

        //TODO .getClass() 获取对象的类对象
        Class<? extends User> aClass = user.getClass();

        //TODO .getName() .getSimpleName() 获取类对象 -- 类的名称
        System.out.println(aClass.getName()); //类的完整名称 - 包.类
        System.out.println(aClass.getSimpleName()); //类名 - 类
        System.out.println(aClass.getPackage()); //类的包名 - 包

        //TODO .getSuperclass() 获取类的父亲
        Class<?> superclass = aClass.getSuperclass();
        System.out.println(superclass);

        //TODO .getInterfaces() 获取类的接口 -- 可以有多个接口 -- 数组
        Class<?>[] interfaces = aClass.getInterfaces();
        System.out.println(interfaces.length);

        //TODO 获取类的属性
        Field f = aClass.getField("xxxx"); //public 修饰的指定属性
        Field f1 = aClass.getDeclaredField("xxxx"); //所有权限的指定属性

        Field[] fields = aClass.getFields(); //获取所有public属性 -- 数组
        Field[] declaredFields = aClass.getDeclaredFields(); //获取所有权限的所有属性

        //TODO 获取类的方法
        Method method = aClass.getMethod("xxxx");  //public + 指定方法
        Method method1 = aClass.getDeclaredMethod("xxxx"); //所有权限 + 指定方法

        Method[] methods = aClass.getMethods(); //public + 所有方法
        Method[] declaredMethods = aClass.getDeclaredMethods(); //所有权限 + 所有方法

        //TODO .getConstructor() 构造方法
        Constructor<? extends User> constructor = aClass.getConstructor();
        Constructor<?>[] constructors = aClass.getConstructors();
        
        Constructor<? extends User> declaredConstructor = aClass.getDeclaredConstructor();
        Constructor<?>[] declaredConstructors = aClass.getDeclaredConstructors();

        //TODO 获取权限(修饰符) -- 多个修饰符会融合成一个int值
        int modifiers = aClass.getModifiers();
        //TODO Modifier类提供方法通过 int 值判断权限
        boolean aPrivate = Modifier.isPrivate(modifiers);


    }
}

class User{
    public void test1(){

    }
}

class Child extends User{
    public void test2(){

    }
}

标签:反射,aClass,--,基础,获取,权限,TODO,public
From: https://www.cnblogs.com/Ashen-/p/17027442.html

相关文章

  • 数据库alter基础命令
    数据库ALTER语句使用ALTER语句使用ALTER是数据库DDL语言的一部分,其操作对像主要是可以是表中的字段和索引,一般被用来修改上述对象的部分。1、操作表1.1表中增加列ALT......
  • android基础02 - 多媒体、多线程与异步任务、Service、网络
    多媒体通知通知渠道:程序对自己发出的通知进行分类,用户可根据渠道对消息进行屏蔽或设置响铃振动。一个应用的通知渠道一旦创建就无法再修改,只能再创建新的可在Activity、......
  • shell基础代码_ $? -ne 0 和 >、  1>、 2>、2>&1、&> 详解
     if[$?-ne0]$? 表示上一条命令返回值,是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.$0  表示第一个参数-ne表示不等于>、 ......
  • Openpyxl教程-基础操作
    1.openpyxl简介openpyxl是用于读取/写入Excel2010xlsx/xlsm文件的Python库,也就是说openpyxl这个Python库不支持xls文件的读取和操作,如果在工作中遇到xls文件我们就不能......
  • Java基础语法
    基本的dos命令打开cmd的方式开始+系统+命令提示行Win+R输入cmd打开控制台在任意的文件夹下面,按住shift+鼠标右键,在此处打开命令行窗口资源管理器的地址栏前面加上......
  • 文献与代码管理工具及统计基础
    文献与代码管理工具及统计基础学习方法:好好上网,文献与代码管理工具1.好好上网2.Mendeley3.github1.好好上网,好好学习,好好提问上网入口:搜索引擎(Google、Bing)查文......
  • SQL基础一
    SQL是访问和处理关系数据库的计算机标准语言。数据库模型:层次模型、网状模型、关系模型关系型数据库目前,主流的关系数据库主要分为以下几类:商用数据库,例如:Oracle,SQLS......
  • 2023-01-04 跟庄量学。基础概念,王牌柱,九阴真经
     王牌柱:1.第一根阳柱,高倍平梯2.之后三天:平均收盘价不破第一根阳柱(1)平均收盘价高于第一根阳柱收盘价(2)平均收盘价介于第一根阳柱之间思考:因为上涨过程中要看阳柱,思......
  • 极客时间《性能测试实战》——性能测试基础
    性能测试的概念1.性能测试概念的传统解释:压力测试压力测试是评估系统处于或超过预期负载时系统的运行情况。压力测试的关注点在于系统在峰值负载或超出最大载荷情况下......
  • Rust-02 Rust的基础类型
    整数类型(IntegerNumber)长度有符号无符号8-biti8u816-biti16u1632-biti32u3264-biti64u64128-biti128u128archisizeusize其中i......