1. 测试实体类
public class TestClass {

    public String classInfo;

    public String getClassInfo() {
return classInfo;
} public TestClass(String classInfo) {
this.classInfo = classInfo;
System.out.println("invoke this param classInfo constructor.");
} public TestClass()
{
System.out.println("invoke this default constructor.");
}
public void setClassInfo(String classInfo) {
this.classInfo = classInfo;
} static {
System.out.println("init first class.");
} public void showinfo()
{
System.out.println("this is default show info method.");
} public void showinfo(String info)
{
System.out.println("this is have param method.");
System.out.println("param context:"+info);
} }
  1.   测试实现类
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method; public class getClassInfoTest {
@Test
public void testDemo() throws Exception
{
/**
* 1.实现反射的第一步:获取对象的类型信息,java中指存放类型信息的.class文件
* 2.在这里是获取对象的所有构造方法.
* 3.找到需要的构造方法.
* 4.调用指定构造方法,创建对象.
*/
Class clazz=Class.forName("TestClass");
/**
* 获取构造方法
* 调用newInstance(...) 相当于 new TestClass(...)
*/
Constructor[] constructors=clazz.getConstructors();
System.out.println("constructor item:"+'\n');
arrayToStringItem(constructors);
Object test=constructors[0].newInstance();
Object test2=constructors[1].newInstance("hello"); /**
* 获取属性
*/
Field[] fields=clazz.getFields();
System.out.println("field item:"+'\n');
arrayToStringItem(fields);
Field field=fields[0];
System.out.println("field name:"+field.getName());
System.out.println("get dafault constructor field value:"+field.get(test));
System.out.println("get have param constructor field value:"+field.get(test2)); /**
* 获取方法
*/
Method[] methods=clazz.getMethods();
System.out.println("method item:"+'\n');
arrayToStringItem(methods);
System.out.println("invoke "+methods[0].getName()+" get return value:"+methods[0].invoke(test2));
} public void arrayToStringItem(Object[] args)
{
for (Object c:args)
{
System.out.println(c);
}
}
}

  

最新文章

  1. 【BZOJ】4245: [ONTAK2015]OR-XOR
  2. 【转】使用:after清除浮动
  3. C# Double保留小数点后面位数
  4. Web 项目可能会用到的20款优秀的开源工具
  5. 【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)
  6. jQuery控制CSS样式
  7. SQL 汉字转换成拼音首字母 首字母查
  8. HackerRank "No Prefix Set"
  9. 黄聪:百度知道中对HTML字符实体、字符编号,&开头字符的使用
  10. Apache CloudStack多个跨站脚本漏洞(CVE-2013-2136)
  11. 验证API
  12. c++代码的陪伴下----菜鸟的转变
  13. 使用紧凑的序列化器,数倍提升性能 —— ESFramework 4.0 快速上手(11)
  14. Ubutu Chrome 出现adobe flash is out of date的解决方法
  15. logback生成多个不同的日志文件
  16. Css - 选择器和样式
  17. P1439 最长公共子序列(nlognLCS问题)
  18. nginx+lua学习
  19. js 事件冒泡、捕获;call()、apply()
  20. makefile 字符串处理函数

热门文章

  1. 关于出现Specified VM install not found: type Standard VM, name jdk1.5.0_04问题的解决办法
  2. centos7下kubernetes(17。kubernetes-回滚)
  3. 【jq】prop和attr的区别
  4. 三 Struts2 添加返回数据
  5. 2019-03-23 shell练习,日志统计
  6. UUID简记
  7. PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
  8. Django create和save方法
  9. js-webpack自动化构建工具
  10. 在IIS上搭建WebSocket服务器(一)