//开始访问私有方法showName来打印对象信息
Method showNameMethod = dataType.getDeclaredMethod("showName",
new Class[] {});
showNameMethod.setAccessible(true);
showNameMethod.invoke(data, new Object[] {});//output:Name is:hello
// 开始访问的setData方法来更改对象信息
Method setDataMethod = dataType.getDeclaredMethod("setData",
new Class[] { int.class });
setDataMethod.setAccessible(true);
setDataMethod.invoke(data, new Object[]{new Integer(100)});//设置data域 为100
//开始访问静态私有的成员变量
Field dataField = dataType.getDeclaredField("data");
dataField.setAccessible(true);
System.out.println(dataField.getInt(data));//output:100
dataField.setInt(null, 200);//再次修改私有成员data的值
System.out.println(dataField.getInt(data));//output:200
//开始访问私有成员变量
Field nameField = dataType.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(data,new String("Fuck!"));//修改私有变量name的值
showNameMethod.invoke(data, new Object[] {});//Name is:Fuck!
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
}
private Data(int data,String name){
this.data = data;
this.name = name;
}
private void showName(){
System.out.println("Name is:"+name);
}
private static void showData(){
System.out.println("Data is:"+getData());
}
private static int getData(){
return data;
}
private void setData(int data){
this.data = data;
}
private void setString(String name){
this.name = name;
}
}