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);
}
}
}

  

java反射常用类的更多相关文章

  1. java 反射提取类信息, 动态代理 和过滤某些方法演示

    java 反射提取类信息, 动态代理 和过滤某些方法演示 package org.rui.classts.reflects; import java.lang.reflect.Constructor; ...

  2. Java 反射 分析类和对象

    Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...

  3. Java 反射 Class类

    Java 反射 Class类 @author ixenos 摘要:Class类在反射中的地位.构造Class对象的三种方式.Class对象构造对应类型对象的三种方式 Class类在反射中的地位 位于j ...

  4. Java API 常用类(一)

    Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...

  5. 【java】java反射 Field类的研究使用

    java反射 Field类的研究使用 user.getClass().getFields() 和 user.getClass().getDeclaredFields(); 的区别是什么?

  6. 利用Java反射根据类的名称获取属性信息和父类的属性信息

    代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java ...

  7. 利用java反射调用类的的私有方法--转

    原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...

  8. java反射工具类

    package com.yingchao.kgou.core; import java.lang.reflect.Field; import java.lang.reflect.InvocationT ...

  9. Java中常用类(包装类扩展知识)

    Java常用类有哪些? 八大基本数据类型的包装类 包装类均位于java.lang包中,包装类和基本数据类型的对应关系如下表: 基本数据类型 包装类 byte Byte boolean Boolean ...

随机推荐

  1. Pyqt5-Python应用开发——第一个小程序的实现

    环境:python 3.6.6 编辑器:pycharm 其他:QtDesigner:Qt Designer,是一个直观可见的全方位 GUI 构造器,它所设计出来的用户界面能够在多种平台上使用.它是 Q ...

  2. Python小数据池和字典操作

    小数据池 #id 查看内存地址 #多个代码块可以使用小数据池 #一个代码块中有一个问题,就是重复使用 #数字 -5~256 #字符串 字符串 乘法总数长度不能超过20, 0,1除外 #不能有特殊字符 ...

  3. Hadoop的NullWritable

    NullWritable是Writable的一个特殊类,实现方法为空实现,不从数据流中读数据,也不写入数据,只充当占位符,如在MapReduce中,如果你不需要使用键或值,你就可以将键或值声明为Nul ...

  4. vue 中使用jquery

    vue-cli搭建的项目 第一种方式:npm 引包的方式 1.安装jquery npm install jquery --save 2.webpack配置 在项目根目录下的build目录下找到webp ...

  5. 在 CentOS 7 中安装 MySQL 8

    准备 本文环境信息: 软件 版本 CentOS CentOS 7.4 MySQL 8.0.x 安装前先更新系统所有包 sudo yum update 安装 1. 添加 Yum 包 wget https ...

  6. wget命令使用报错 certificate common name 'xxx' doesn't match requestde host name

    使用wget命令 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 报如下错 error:certificate common name & ...

  7. rs485引脚定义

    转自:http://blog.chinaunix.net/uid-9688646-id-3275796.html rs485有两种,一种是半双工模式,只有DATA+和DATA-两线,另一种是全双工模式 ...

  8. Jenkins与sonar扫描的集成问题

    记录本周遇到的头疼了很久的一个问题,由于公司需要使用jenkins来自动管理构建项目,然后在关联sonar对项目代码质量进行审核. 接着坑爹的问题来了,原有的技术手段为项目构建成功后通过jenkins ...

  9. Python——SQLite

    一.连接数据库 import sqlite3 conn = sqlite3.connect('数据库名.db') 二.插入 import sqlite3 conn = sqlite3.connect( ...

  10. linux 实现centos7在线升级最新版本内核

    Kernel  (内核)是操作系统的核心,掌握所有硬件设备的控制权,也就是说,你所希望计算机帮你完成的各项工作,都需要通过内核的帮助才能完成,当然,如果我们想完成的某个功能是内核没有的,则内核不会操控 ...