java反射

https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.htmlhttps://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html
   Java-反射机制(超详解)_java反射机制-CSDN博客
 override fun initData() {
        // 获取Person类的Class对象  这里注意:这里获取的是类的全路径名,而不是类的名称
        val personClass = Class.forName("com.rh.scan.tomato.bean.person")
        // 获取Person类的构造函数 有参数构造函数 (参数这里使用的是类)
//        val constructor: Constructor<*> =
//            personClass.getConstructor(String::class.java, Int::class.javaPrimitiveType)
//        val person = constructor.newInstance("John", 25)
        //获取无参构造函数
        val constructor: Constructor<*> =
            personClass.getConstructor()
        // 创建Person实例
        val person = constructor.newInstance()

        val declaredField = personClass.getDeclaredField("name")
        declaredField.set(person,"yetejsj")
        println("name值${declaredField.get(person)}")
//        // 获取sayHello方法
        val sayHelloMethod: Method = personClass.getMethod("getaaa")
        // 调用sayHello方法
        val invoke = sayHelloMethod.invoke(person)
        println("name----${invoke}")

        // 获取所有声明的属性
        val declaredFields: Array<Field> = personClass.declaredFields
        println("返回属性的个数${declaredFields.size}")
        for (field in declaredFields) {
            field.setAccessible(true);
            System.out.println("Declared Field: " + field.getName())
        }

        // 获取公共的属性
        val publicFields = personClass.fields
        println("返回属性的个数----${publicFields.size}")
        for (field in publicFields) {
            println("Public Field: " + field.name)
        }

        // 获取所有声明的方法  只限于当前的类
        val declaredMethods = personClass.declaredMethods
        for (method in declaredMethods) {
            println("Declared Method: " + method.name)
        }
        // 获取所有公共的方法(包含父类方法) 没有私有的  
        val declaredMethods1 = personClass.methods
        for (method in declaredMethods1) {
            method.setAccessible(true)
            println("Public Method: " + method.name)
        }
    }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值