Java程序语言的后门(2)

public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// TODO Auto-generated method stub
//获取类对象,除了这份方法外还有另外两种方法
Class clazz = HaShiQi.class;

System.out.println("——————— 获取所有公有的属性 —————————"); Field[] fields = clazz.getFields(); for(Field field : fields) { field.setAccessible(true); System.out.println(field); } }

  打印结果:

——————— 获取所有公有的属性 —————————
public java.lang.String com.zcz.reflecttest.HaShiQi.color
  可以看到只有一个color属性,使用getFields方法是获取不到私有属性了,想要获取私有属性就要使用下方的方法:

public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// TODO Auto-generated method stub
//获取类对象,除了这份方法外还有另外两种方法
Class clazz = HaShiQi.class;

System.out.println("——————— 获取所有公有的属性 —————————"); Field[] fields = clazz.getFields(); for(Field field : fields) { field.setAccessible(true); System.out.println(field); } System.out.println("——————— 获取所有的属性 —————————"); fields = clazz.getDeclaredFields(); for(Field field : fields) { field.setAccessible(true); System.out.println(field); } }

  打印结果:

——————— 获取所有公有的属性 —————————
public java.lang.String com.zcz.reflecttest.HaShiQi.color
——————— 获取所有的属性 —————————
public java.lang.String com.zcz.reflecttest.HaShiQi.color
private java.lang.String com.zcz.reflecttest.HaShiQi.name
  可以看到,HaShiQi类中私有(private修饰的)的name属性打印出来了。

五,获取方法

  代码:

public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// TODO Auto-generated method stub
//获取类对象,除了这份方法外还有另外两种方法
Class clazz = HaShiQi.class;

System.out.println("——————— 获取所有公有的属性 —————————"); Field[] fields = clazz.getFields(); for(Field field : fields) { field.setAccessible(true); System.out.println(field); } System.out.println("——————— 获取所有的属性 —————————"); fields = clazz.getDeclaredFields(); for(Field field : fields) { field.setAccessible(true); System.out.println(field); } System.out.println("——————— 获取所有公有的方法 —————————"); Method[] methods = clazz.getMethods(); for(Method method : methods) { System.out.println(method); } }

  打印结果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d6c6a85d67794374490ef85f86c9a69d.html