Java反射
Posted starstarstar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java反射相关的知识,希望对你有一定的参考价值。
Java的反射:
Robot.java:
package 包.reflect; public class Robot private String name; public void sayHi(String helloSen) System.out.println(helloSen + ":" + name); private String throwHello(String tag) return "private Hello:" + tag;
ReflectDemo.java:
package 包.reflect; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException Class rc = Class.forName("包.reflect.Robot"); Robot r = (Robot) rc.newInstance(); System.out.println("class name is :" + rc.getName()); // 获取声明的方法 // getDeclaredMethod获取不到:继承的方法和实现接口的方法 Method getPrivateHello = rc.getDeclaredMethod("throwHello", String.class); getPrivateHello.setAccessible(true); Object str = getPrivateHello.invoke(r, "bob"); System.out.println("getHello result is :" + str); // getMethod获取 类自己的public方法,集成类的方法和实现接口的方法 Method sayHi = rc.getMethod("sayHi", String.class); sayHi.invoke(r, "welcome"); // 设置name Field name = rc.getDeclaredField("name"); name.setAccessible(true); name.set(r, "Alace"); sayHi.invoke(r, "welcome");
运行结果:
class name is :qihoo.qtest.mqtt.reflect.Robot getHello result is :private Hello:bob welcome:null welcome:Alace
以上是关于Java反射的主要内容,如果未能解决你的问题,请参考以下文章