Friends
public class Friends {
public int number=250;
private String name;
private int age;
private String address;
// public Friends() {
// System.out.println("默認構造器正在運行!");
// }
public Friends(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
System.out.println("新創建一個對象!");
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void makingFriends(){
System.out.println("今天新交了一個朋友!他叫"+getName()+"今年"+getAge()+"歲,家住"+getAddress());
}
public String Saying(){
return "老子都還沒開腔,她就把我電話掛了";
}
}
<pre name="code" class="java">package com.book.reflect0;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
try {
//Friends man = new Friends();
//Class clazz = man.getClass(); //使用對象名調用其getClass()方法返回其對象所屬類對應得Class對象
//Class clazz = Friends.class; //如果在編譯期知道類名,直接調用其class屬性來獲得其對象的Class對象
Class clazz = Class.forName("com.book.reflect0.Friends"); //在編譯期不知道類名,運行期知道類名,使用Class類的forName()靜態方法來獲得其Class對象
Constructor con = clazz.getConstructor(String.class,int.class,String.class);
//Method m = clazz.getMethod("makingFriends", types);
Object friend = con.newInstance("向政先",20,"四川達州");
Method m = clazz.getMethod("makingFriends");
Method m1 = clazz.getMethod("Saying");
m.invoke(friend, null); //通過invoke()方法調用對應的方法
String s = (String) m1.invoke(friend);
System.out.println(s);
Field f = clazz.getField("number"); //通過Field()訪問屬性
Integer in = (Integer) f.get(friend);
System.out.println(in);
f.set(friend, 38);
System.out.println(f.get(friend));
Method m2 = clazz.getMethod("setAge", Integer.TYPE);//通過set和get方法修改屬性
m2.invoke(friend, 30);
m.invoke(friend);
// Field[] f = clazz.getDeclaredFields(); //查所有的屬性
// Constructor[] con = clazz.getDeclaredConstructors(); //查所有構造函數
// Method[] m = clazz.getDeclaredMethods(); //查所有方法
// System.out.println(Arrays.toString(f));
// System.out.println(Arrays.toString(con));
// System.out.println(Arrays.toString(m));
} catch (Exception e) {
e.printStackTrace();
}
}
}