Java类加载和类反射回顾(二)
r()方法:
ClassLoader loader2 = Xxx.class.getClassLoader();
2、Class对象。
获得Class对象有3种方式:
a)、Class类的forName方法,传入全限定类名。需要抛出异常ClassNotFoundException
b)、调用该类的class属性。
c)、调用某对象的getClass()方法。
3、通过Class对象创建对象:
例如有一个Apple类。Class clazz = Class.forName(“com.stopTalking.crazy.Apple”);
该Apple类有一个默认构造器、一个String类型参数的构造器、一个String类型、int类型的构造器。
获得Apple对象有2种方式:
a)、用Apple类默认构造器:Object o1 = clazz.newInstance();
b)、用一个String类型参数的构造器:Object 02 = clazz.getConstructor(String.class).newInstance(“apple”);
c)、用一个String类型、int类型的构造器:Object 02 = clazz.getConstructor(String.class,int.class).newInstance(“apple”,”3”);
4、调用方法:
Method m = clazz.getMethod(方法名,参数类型);//根据方法名和参数类型创建Method对象。
m.invokej(对象,属性值);//根据对象和方法参数调用方法。
若需调用private方法,先调用Method对象的setAccessible(true);
5、访问属性:
Field f = clazz.getDeclaredField(属性名);//根据属性名获取Field对象
f.get(对象);//根据对象得到属性值。
6、操作数组:
Object arr = Array.newInstance(String.class,10);//创建一个简单的String数组。
Array.set(arr,5,”abc”);//给该数组下标为5的元素赋值
Object name = Array.get(arr,5);//获取该元素