Java类加载机制和反射机制(二)

Class类常用类:
forName(String className) 返回与带有给定字符串名的类 或接口相关联的 Class 对象。
代码:Class<?>studentClass=Class.forName("com.gx.refect.Student"); forName(String name, boolean initialize, ClassLoader loader) 使用给定的类加载器,返回与 带有给定字符串名的类或接口 相关联的 Class 对象。 getClassLoader() 返回该类的类加载器。 getConstructor(Class... parameterTypes) 返回一个 Constructor 对象, 它反映此 Class 对象所表示的 类的指定公共构造方法。 getConstructors() 返回一个包含某些 Constructor 对象的数组,这 些对象反映此 Class 对象所表 示的类的所有公共构造方法。 代码:studentClass.getConstructors();//获取public构造器 不考虑使用 getDeclaredConstructor(Class... parameterTypes) 返回一个 Constructor 对象, 该对象反映此 Class 对象所表 示的类或接口的指定构造方 法。 getDeclaredConstructors() 返回 Constructor 对象的一个 数组,这些对象反映此 Class 对象表示的类声明的所有构造 方法。 代码:System.out.println("---所有的构造器---"); Constructor[] constructors= studentClass.getDeclaredConstructors(); for (Constructor constructor : constructors) { StringBuilder builder=new StringBuilder(); //修饰符 builder.append("\t"+Modifier.toString(constructor.getModifiers())); //构造器名称 builder.append(" "+constructor.getName()+"("); //构造器参数类型列表 Class<?>[] rarameterTypes=constructor.getParameterTypes();
for (Class<?> rarameterType : rarameterTypes) {
builder.append(rarameterType.getSimpleName()+“,”);
}
builder.append(“)”);
String str=builder.toString();
str=str.replace(“,)”, “)”);
System.out.println(str);
}

getDeclaredField(String name) 返回一个 Field 对象,该对象反 映此 Class 对象所表示的类或 接口的指定已声明字段。
getDeclaredFields() 返回 Field 对象的一个数组,这 些对象反映此 Class 对象所表 示的类或接口所声明的所有字 段。
代码:System.out.println(“—所有的成员变量----”);
Field[] fields=studentClass.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
StringBuffer sBuffer=new StringBuffer();
sBuffer.append(“\t”);
sBuffer.append(i+1);
sBuffer.append(“:”);
//修饰符
sBuffer.append(Modifier.toString(fields[i].getModifiers()));
sBuffer.append(" “);
//类型
sBuffer.append(fields[i].getType().getSimpleName());
sBuffer.append(” “);
//成员变量名
sBuffer.append(fields[i].getName());
System.out.println(sBuffer.toString());
}
getDeclaredMethod(String name, Class… parameterTypes) 返回一个 Method 对象,该对 象反映此 Class 对象所表示的 类或接口的指定已声明方法。
getDeclaredMethods() 返回 Method 对象的一个数 组,这些对象反映此 Class 对 象表示的类或接口声明的所有 方法,包括公共、保护、默认 (包)访问和私有方法,但不 包括继承的方法。
代码:System.out.println(”----所有的方法-----“);
Method[] allmethods=studentClass.getDeclaredMethods();
for (int i = 0; i < allmethods.length; i++) {
StringBuffer sBuffer=new StringBuffer();
sBuffer.append(”\t");
sBuffer.append(i+1);
sBuffer.append(“:”);
//获取修饰符
sBuffer.append(Modifier.toString(allmethods[i].getModifiers()));
sBuffer.append(" “);
//获取返回值类型
sBuffer.append(allmethods[i].getReturnType().getSimpleName());
sBuffer.append(” “);
//方法名称
sBuffer.append(allmethods[i].getName());
sBuffer.append(”(“);
//方法参数类型
Class<?>[] ptypes=allmethods[i].getParameterTypes();
for (int j = 0; j < ptypes.length; j++) {
sBuffer.append(ptypes[j].getSimpleName());
sBuffer.append(” “);
}
sBuffer.append(” )");
System.out.println(sBuffer.toString());
}
getField(String name) 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的 指定公共成员字段。 getFields() 返回一个包含某些 Field 对象的 数组,这些对象反映此 Class 对象所表示的类或接口的所有 可访问公共字段。
getMethod(String name, Class… parameterTypes) 返回一个 Method 对象,它反 映此 Class 对象所表示的类或 接口的指定公共成员方法。
getMethods() 返回一个包含某些 Method 对 象的数组,这些对象反映此 Class 对象所表示的类或接口 (包括那些由该类或接口声明 的以及从超类和超接口继承的 那些的类或接口)的公共 member 方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值