標籤:比較 access cas result zhang struct 屬性 win name
擷取Class類執行個體的三種方式:
Person person = new Person();
(1) . person.getClass();
(2) . Person.class;
(3) . Class.forName("cn.xxxx.test.Person");
由於前兩種方式都需要明確指定的類,所以一般不建議使用,一般建議使用第三種,只需要傳入一個字串即可,靈活性比較大。
Class clazz = Class.forName("cn.itcast.test.Person"); //通過無參的構造方法建立對象 /*Person person = (Person) clazz.newInstance(); person.setAge(10); person.setName("lisi");*/ //通過有參的構造方法建立對象 /*Constructor[] constructors = clazz.getConstructors(); Person person = (Person) constructors[0].newInstance(18,"zhangsan");*/ //通過反射訪問屬性 /*Object person = clazz.newInstance(); Field agef = clazz.getDeclaredField("age"); Field namef = clazz.getDeclaredField("name"); agef.setAccessible(true); namef.setAccessible(true); agef.set(person,11); namef.set(person, "zhaoliu");*/ //通過反射調用方法 /*Method meth = clazz.getMethod("sayHello",String.class,int.class); String result = (String) meth.invoke(clazz.newInstance(),"zhangsan",35);*/ System.out.println(result);
相應的操作類:
class Person{ private String name; private int age; public Person(){} public Person(int age,String name){ this.age=age; this.name=name; } public String sayHello(String name,int age){ return name+":"+age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return this.name+":"+this.age; }}
java反射小記