运行时的类信息:人们想要在运行时获得类的信息的另一个动机,便是希望提供在跨网络的远程平台上创建和运行对象的能力。这被称为远程方法调用(RMI)
1.获得全部类的构造函数
Constructor<?>[] constructors = clazz.getDeclaredConstructors();
2.获得public修饰的构造函数
Constructor<?>[] publicC = clazz.getConstructors();
3.获得指定的构造函数
Constructor<?> cons = clazz.getDeclaredConstructor(new Class[] {String.class, int.class, int.class });
• 创建对象
1.用Class对象的方法创建对象
Object o = clazz.newInstance();
2.用获得的构造函数创建对象
Object o1 = cons.newInstance(luzhangfei, 12, 22);
1.获得类全部方法(不包含父类方法)
Method[] methods = clazz.getDeclaredMethods();
2.获得类的public修饰的方法(包含父类的public方法)
Method[] methods2 = clazz.getMethods();
3.获得指定的方法
Method method = clazz.getMethod(test, String.class);
调用方法
method.invoke(o, hello);
• 获得成员变量
1.获得类所有的成员变量
Field[] fields = clazz.getDeclaredFields();
2.获得类的public变量
Field[] fields2 = clazz.getFields();
3.获得类的指定的变量
Field fields3 = clazz.getDeclaredField(age);
取得变量的值/为其设定值
fields3.set(o, 15);
System.out.println(fields3.get(o));
动态使用数组
• 获得类的构造函数
1.获得全部类的构造函数
Constructor<?>[] constructors = clazz.getDeclaredConstructors();
2.获得public修饰的构造函数
Constructor<?>[] publicC = clazz.getConstructors();
3.获得指定的构造函数
Constructor<?> cons = clazz.getDeclaredConstructor(new Class[] {String.class, int.class, int.class });
• 创建对象
1.用Class对象的方法创建对象
Object o = clazz.newInstance();
2.用获得的构造函数创建对象
Object o1 = cons.newInstance(luzhangfei, 12, 22);
• 获得类的方法
1.获得类全部方法(不包含父类方法)
Method[] methods = clazz.getDeclaredMethods();
2.获得类的public修饰的方法(包含父类的public方法)
Method[] methods2 = clazz.getMethods();
3.获得指定的方法
Method method = clazz.getMethod(test, String.class);
调用方法
method.invoke(o, hello);
• 获得成员变量
1.获得类所有的成员变量
Field[] fields = clazz.getDeclaredFields();
2.获得类的public变量
Field[] fields2 = clazz.getFields();
3.获得类的指定的变量
Field fields3 = clazz.getDeclaredField(age);
取得变量的值/为其设定值
fields3.set(o, 15);
System.out.println(fields3.get(o));
动态使用数组
Object arr = Array.newInstance(String.class, 2);
Array.set(arr, 0, hello);
Array.set(arr, 1, world);
for(int i = 0 ;i < 2 ;i++){
System.out.println(Array.get(arr, i));
}