本文共 3408 字,大约阅读时间需要 11 分钟。
class Animal { String dd;}
package day12.reflect;public class Person extends Animal { String name; String age; public Person() { super(); // TODO Auto-generated constructor stub } public Person(String name, String age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public void hello() { System.out.println("你好"); } public void hi(String name) { System.out.println(name+",你好"); }}
package day12.reflect;import java.util.ArrayList;public class Test { public static void main(String[] args) { // 所有类都是class实例 Person p = new Person(); Class c3 = p.getClass(); System.out.println(c3);// class day12.reflect.Person // 2对象 Class c4 = Person.class; System.out.println(c4);// class day12.reflect.Person // 3.给字符串 String类的class实例 try { // class实例 Class c = Class.forName("day12.reflect.Person");// class day12.reflect.Person Class c1 = Class.forName("java.util.ArrayList");// class java.util.ArrayList Class c2 = Class.forName("java.lang.String");// class java.lang.String System.out.println(c); System.out.println(c1); System.out.println(c2); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
package day12.reflect;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import javax.swing.JFrame;public class Test2 { // 利用class实例取出属性和方法 public static void main(String[] args) { Class c = Person.class; Field sx[] = c.getDeclaredFields(); //得到属性 for (Field f : sx) { System.out.println(f); } /* * java.lang.String day12.reflect.Person.name java.lang.String * day12.reflect.Person.age */ Method sz[] = c.getDeclaredMethods();//得到方法 Method sz2[] = c.getMethods();//同时得到继承的方法 for (Method m : sz) { System.out.println("方法:"+m); } /* * 方法:public java.lang.String day12.reflect.Person.getName() 方法:public void * day12.reflect.Person.setName(java.lang.String) 方法:public void * day12.reflect.Person.hello() 方法:public void * day12.reflect.Person.setAge(java.lang.String) 方法:public java.lang.String * day12.reflect.Person.getAge() 方法:public void * day12.reflect.Person.hi(java.lang.String) */ Class p=c.getSuperclass();//查父类 System.out.println("父类:"+p);//父类:class day12.reflect.Animal Class c2=JFrame.class;//一阶一阶的查父类 while(true) { c2=c2.getSuperclass(); System.out.println(c2); if(c2==null) { break; } } /* * class java.awt.Frame class java.awt.Window class java.awt.Container class * java.awt.Component class java.lang.Object null */ }}
package day12.reflect;import java.lang.reflect.Method;public class Test3 { public static void main(String[] args) { //不用反射,如何调用方法 Person a=new Person(); a.hello(); a.hi("Aimee"); //反射如何调用方法 1对象 2方法 3参数 Class c=Person.class; try { Object obj=c.newInstance();//对象 Method m=c.getDeclaredMethod("hello");//无参数方法 m.invoke(obj); Method m=c.getDeclaredMethod("hi", String.class);//有一个参数 m.invoke(obj, "Aimee"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
转载地址:http://maksi.baihongyu.com/