java反射

来源:互联网 发布:网络热词一个亿七个字 编辑:程序博客网 时间:2024/06/05 19:33

java反射


public class Demo2 {

 public static void main(String[] args) throws Exception {


   //取得Person类对应的字节码对象Class

   Class clazz = Class.forName("cn.itcast.java.reflect.Person");


   //取得该类的唯一构造方法

   //Constructor c  = clazz.getConstructor(null);

   //Constructor c = clazz.getConstructor(String.class,int.class);

   Constructor c = clazz.getDeclaredConstructor(null);


   //创建实例

   //Person p = (Person) c.newInstance(null);

   //Person p = (Person) c.newInstance("berry",10);


   //设置非public成员的访问性,默认false即不可访问性

   c.setAccessible(true);


   Person p = (Person) c.newInstance(null);


   //执行方法

   p.show();


 }

}



public class Demo3 {

 public static void main(String[] args) throws Exception {

   Person p = new Person();

   Class c = Class.forName("cn.itcast.java.reflect.Person");

   Field f = c.getDeclaredField("name");

   f.setAccessible(true);

   f.set(p,"杰克");//p.setName("杰克")

   System.out.println("用户名:" + p.getName());

 }

}



public class Demo4 {

 public static void main(String[] args) throws Exception {

   Class c = Class.forName("cn.itcast.java.reflect.Person");

   Constructor con = c.getConstructor(null);

   Person p = (Person) con.newInstance(null);

   Method m = c.getDeclaredMethod("goodbye",null);

   m.setAccessible(true);

   String returnValue = (String) m.invoke(p,null);

   System.out.println(returnValue);


   //Method m = c.getMethod("show",String[].class,double.class);

   //m.invoke(p,new String[]{"sing","dance"},5000);//new Person().show()

 }

}



public class Demo6 {

 public static void main(String[] args) throws Exception {


   //加载属性文件,取得类名的方法名

   Properties props = new Properties();

   InputStream is = new FileInputStream("src/cn/itcast/java/reflect/class.properties");

   props.load(is);

   String className = props.getProperty("className").trim();

   String methodName = props.getProperty("methodName").trim();


   //通过反射,执行该类的方法

   Class c = Class.forName(className);

   Constructor con = c.getConstructor(null);

   Method m = c.getDeclaredMethod(methodName,null);

   m.setAccessible(true);

   m.invoke(con.newInstance(null),null);


 }

}


0 0
原创粉丝点击