ReflectTest

package com.djwl.test.studying;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectTest {

public static void main(String args[]) {
try {
Class<?> c = Class.forName("com.djwl.test.studying.TestReflect");
System.out.println(c);
System.out.println("`````````````````````````````````````````````");
// 构造方法
System.out.println("\n\n=======构造方法:");
Constructor<?> cts[] = c.getDeclaredConstructors();
for (Constructor<?> ct : cts) {
System.out.println("``````````````````");
System.out.println("ct: " + ct.toString());
System.out.println("name: " + ct.getName());
System.out.println("ct class:" + ct.getDeclaringClass());
for (Class<?> class1 : ct.getParameterTypes()) {
System.out.println("param:" + class1);
}
for (Class<?> class1 : ct.getExceptionTypes()) {
System.out.println("exc:" + class1);
}
}

// 方法信息
System.out.println("\n\n=======方法信息:");
Method m[] = c.getDeclaredMethods();
for (Method method : m) {
System.out.println("``````````````````");
System.out.println("method: " + method.toString());
System.out.println("name: " + method.getName());
System.out.println("getDeclaringClass:" + method.getDeclaringClass());
for (Class<?> class1 : method.getParameterTypes()) {
System.out.println("param: " + class1);
}
for (Class<?> class1 : method.getExceptionTypes()) {
System.out.println("exception: " + class1);
}
System.out.println("return: " + method.getReturnType());
}

// 获取类的字段(域)
System.out.println("\n\n=======字段信息:");
for (Field fld : c.getDeclaredFields()) {
System.out.println("name = " + fld.getName());
System.out.println("decl class = " + fld.getDeclaringClass());
System.out.println("type = " + fld.getType());
int mod = fld.getModifiers();
System.out.println("modifiers = " + Modifier.toString(mod));
System.out.println("-----");
}

// 根据方法的名称来执行方法
System.out.println("\n\n=======根据方法的名称来执行方法:");
Class[] paramTypes = new Class[2];
paramTypes[0] = Integer.TYPE;
paramTypes[1] = Integer.TYPE;
Method method = c.getMethod("add", paramTypes);

Object[] argList = new Object[2];
argList[0] = new Integer(37);
argList[1] = new Integer(43);

ReflectTest t = new ReflectTest();
Object returnObj = method.invoke(t, argList);
Integer returnVal = (Integer) returnObj;

System.out.println("方法执行结果为:" + returnVal.intValue());
} catch (Throwable e) {
System.err.println(e);
}
}

public ReflectTest() {

}

public ReflectTest(String id) {

}

public ReflectTest(String id, String password, Integer age) throws IOException, FileNotFoundException {

}

public void update() {

}

public String getName() {
return "xiaoming";
}

public Integer getAge(String userid) throws IOException {
return 0;
}

public int add(int a, int b) {
return a + b;
}

private String name;
private String password;
public Integer age;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值