Java 反射篇——获取一般方法、属性
Java 反射篇——获取一般方法、属性
代码
- 获取一般方法
Class<?> myClass = Class.forName("com.zhang.reflect.Student");
Object myObject = myClass.getDeclaredConstructor().newInstance();
System.out.println("======获取一般方法====");
// 获取方法等都是在类模板上面操作的
// 获取所声明的方法(public private等)
Method[] methods = myClass.getDeclaredMethods();
for (Method method : methods){
System.out.println(method.getModifiers());
System.out.println(Modifier.toString(method.getModifiers())); // 人性化显示
// 获取一般方法上面的所有参数
Parameter[] parameters = method.getParameters();
for (Parameter parameter : parameters){
// 返回的参数类型为一个对象
System.out.println(String.format("参数:%s %s ", parameter.getType().getTypeName(),parameter.getName()));
}
}
- 获取属性
Class myClass = Class.forName("com.zhang.reflect.Student");
// 由DNA具体产生的一个人,实例化
Object o = myClass.getDeclaredConstructor().newInstance();
// 获取这个类对象的所有参数
Field[] declaredFields = myClass.getDeclaredFields();
for (Field field : declaredFields){
// 设置字段为可以访问
field.setAccessible(true);
System.out.println(field.getModifiers());
System.out.println(Modifier.toString(field.getModifiers()));
System.out.println(field.getName()); // 获取属性的名
System.out.println(field.getType());
System.out.println(field.getType().getName());
System.out.println(field.get(o)); // 获取一个具体的人,这个DNA在这个人身上的具体表现的值
}
Class<?> myClass = Class.forName("com.zhang.reflect.Student");
Object o = myClass.getDeclaredConstructor().newInstance();
// 获取指定的属性
Field name = myClass.getDeclaredField("name");
// 是一个对象
System.out.println(name);
// 设置为可以访问
name.setAccessible(true);
System.out.println(name.get(o));
本文来自博客园,作者:ElloeStudy,转载请注明原文链接:https://www.cnblogs.com/ElloeStudy/p/16064007.html