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) } }
java反射
于 2024-06-03 13:42:37 首次发布