java反射常用类
- 测试实体类
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);
}
}
- 测试实现类
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反射常用类的更多相关文章
- java 反射提取类信息, 动态代理 和过滤某些方法演示
java 反射提取类信息, 动态代理 和过滤某些方法演示 package org.rui.classts.reflects; import java.lang.reflect.Constructor; ...
- Java 反射 分析类和对象
Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...
- Java 反射 Class类
Java 反射 Class类 @author ixenos 摘要:Class类在反射中的地位.构造Class对象的三种方式.Class对象构造对应类型对象的三种方式 Class类在反射中的地位 位于j ...
- Java API 常用类(一)
Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...
- 【java】java反射 Field类的研究使用
java反射 Field类的研究使用 user.getClass().getFields() 和 user.getClass().getDeclaredFields(); 的区别是什么?
- 利用Java反射根据类的名称获取属性信息和父类的属性信息
代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java ...
- 利用java反射调用类的的私有方法--转
原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...
- java反射工具类
package com.yingchao.kgou.core; import java.lang.reflect.Field; import java.lang.reflect.InvocationT ...
- Java中常用类(包装类扩展知识)
Java常用类有哪些? 八大基本数据类型的包装类 包装类均位于java.lang包中,包装类和基本数据类型的对应关系如下表: 基本数据类型 包装类 byte Byte boolean Boolean ...
随机推荐
- 重写override
不可重写私有方法. 不可重写非静态的方法,虽然编译器不会报错,但是得不到预期的结果. 可以通过重写的形式对父类的功能进行重新定义,比如:对功能进行修改或者进行升级时. class BaseAction ...
- bat——批量删除文件文件夹
bat批处理,在工作中会带来很多便利. 例如:想删除多个文件夹内的文件夹“Quality”及其子文件 同时删除所有Cyc*文件夹内的所有R00*.tif文件 则可如下操作 先建立父bat文件run_d ...
- Go语言中定时器cron的基本使用
安装:go get github.com/robfig/cron 如果出不去就用gopm 例子: package main import ( "fmt" "github ...
- 第1章 初始Docker容器
1.1 什么是Docker slogan:Build Ship Run Any App Anywher.关键在于Ship,通过把程序和程序运行所需要的环境一起交付. Linux容器技术: Docker ...
- redis分页摘抄
Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注) 分页 要对列表页进行分页,需要知道: ①用户总数 $count ② 页大小 $pageSize:用户自定义 ③ 当前页 ...
- 一 Struts2 开发流程
SSH与SSM简介SSM:Spring+SpringMVC+MybatisSSH:Struts2+Hibernate+SpringStruts2:是侧重于控制层的框架Hibernate:是一个ORM( ...
- 24 python初学(异常)
try, except, else, finally执行顺序:1. 先执行 try 里面的代码块,如果发生异常就会去捕获. 2. 没有错误就会执行 else 里面的信息. 3. 无论怎样都会执行 fi ...
- Linux内存管理 (17)KSM
专题:Linux内存管理专题 关键词:KSM.匿名页面.COW.madvise .MERGEABLE.UNMERGEABLE. KSM是Kernel Samepage Merging的意思,用于合并内 ...
- react混合开发APP,资源分享
第一个: 链接:https://pan.baidu.com/s/1KdIs8EUcB9YTuK9VW1dC7g 密码:b68m 第二个: 链接:https://pan.baidu.com/s/1mi7 ...
- CCProxy使用说明
CCProxy:通过手机调试webservice工具 第一步配置,点击设置 弹出如下页面点击E 弹出如下页面 配置端口,点击确定配置完成!! c#项目在路径为DCYS\.vs\config下找到文件a ...