/**
*
*/
package reject01;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
/**
* 描述:关于反射的基本技能,通过反射获取类名、属性、方法、构造器
*@author 李齐超 *1832655017@qq.com
* 2018年8月31日 下午8:45:12
*/
public class Reject02 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
String str="reject.Person";
try {
//获得类名
Class<?> name = Class.forName(str);
System.out.println(name.getName());//获得包名+类名
System.out.println(name.getSimpleName());//仅仅获得类名
System.out.println(name.getModifiers());//获得修饰符
System.out.println(name.getSuperclass());//获得父类名
//获取属性
Field[] field01 = name.getFields();//获得公开属性
System.out.println("公开属性"+Arrays.toString(field01));
Field[] field02 = name.getDeclaredFields();//获得所有声明的属性
//System.out.println(Arrays.toString(fields));
for (Field field : field02) {
System.out.println("所有声明的属性"+field);
}
//获取方法
Method[] methods = name.getMethods();//获取公开的方法
System.out.println(Arrays.toString(methods));
//通过反射获得有参函数的方法
Method method = name.getDeclaredMethod("setName", String.class);
System.out.println(method);
//获取构造器
Constructor<?>[] constructors = name.getConstructors();//获取所有的构造器
System.out.println(Arrays.toString(constructors));
Constructor<?> constructor = name.getConstructor(String.class,int.class);
System.out.println(constructor);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
通过反射获取类名,属性,构造器,方法的案例分享
最新推荐文章于 2022-12-16 11:29:02 发布