全部的成员变量public java.lang.String renxixiao.Person.address
私有的成员变量private java.lang.String renxixiao.Person.name
私有的成员变量int renxixiao.Person.age
私有的成员变量public java.lang.String renxixiao.Person.address
Person [name=null, age=0, address=null]
Person [name=null, age=0, address=北京]
Person [name=小明, age=0, address=北京]
Person [name=小明, age=27, address=北京]
通过反射获取获取方法并使用
/*
* 通过发生获取方法并使用
*/
public class ReflectDemo {
public static void main(String[] args) throws Exception {
// 获取字节码文件对象
Class c = Class.forName("renxixiao.Person");
// 获取所有的方法
Method[] methods = c.getMethods(); // 获取自己的包括父亲的公共方法
Method[] methodss = c.getDeclaredMethods(); // 获取自己的所有的方法
for (Method method : methods) {
System.out.println("公共方法"+method);
}
for (Method method : methodss) {
System.out.println("所有的方法"+method);
}
Constructor con = c.getConstructor();
Object obj = con.newInstance();
// 获取单个方法并使用
// public void show()
// public Method getMethod(String name,Class<?>... parameterTypes)
// 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型
Method m1 = c.getMethod("show");
// public Object invoke(Object obj,Object... args)
// 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数
m1.invoke(obj); // 调用obj对象的m1方法
System.out.println("----------");
// public void method(String s)
Method m2 = c.getMethod("method", String.class);
m2.invoke(obj, "hello");
System.out.println("----------");
// public String getString(String s, int i)
Method m3 = c.getMethod("getString", String.class, int.class);
Object objString = m3.invoke(obj, "hello", 100);
System.out.println(objString);
// String s = (String)m3.invoke(obj, "hello",100);
// System.out.println(s);
System.out.println("----------");
// private void function()
Method m4 = c.getDeclaredMethod("function");
m4.setAccessible(true);
m4.invoke(obj);
}
}
公共方法public java.lang.String renxixiao.Person.toString()
公共方法public java.lang.String renxixiao.Person.getString(java.lang.String,int)
公共方法public void renxixiao.Person.method(java.lang.String)
公共方法public void renxixiao.Person.show()
公共方法public final void java.lang.Object.wait() throws java.lang.InterruptedException
公共方法public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
公共方法public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
公共方法public boolean java.lang.Object.equals(java.lang.Object)
公共方法public native int java.lang.Object.hashCode()
公共方法public final native java.lang.Class java.lang.Object.getClass()
公共方法public final native void java.lang.Object.notify()
公共方法public final native void java.lang.Object.notifyAll()
所有的方法public java.lang.String renxixiao.Person.toString()
所有的方法private void renxixiao.Person.function()
所有的方法public java.lang.String renxixiao.Person.getString(java.lang.String,int)
所有的方法public void renxixiao.Person.method(java.lang.String)
所有的方法public void renxixiao.Person.show()
show
----------
method hello
----------
hello---100
----------
function