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 ...
随机推荐
- kernel笔记——网络收发包流程
本文将介绍网络连接建立的过程.收发包流程,以及其中应用层.tcp层.ip层.设备层和驱动层各层发挥的作用. 应用层 对于使用socket进行网络连接的服务器端程序,我们会先调用socket函数创建一个 ...
- Nginx 的 access log 如何以 json 形式记录?
Nginx 的 access log 默认是以空格分隔的字符串形式记录的,格式如下 log_format proxy '[$time_local] $remote_addr ' '$protocol ...
- web框架开发-Django视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- (golang)HTTP基本认证机制及使用gocolly登录爬取
内网有个网页用了HTTP基本认证机制,想用gocolly爬取,不知道怎么登录,只好研究HTTP基本认证机制 参考这里:https://www.jb51.net/article/89070.htm 下面 ...
- identity server4 证书
我们需要对token进行签名, 这意味着identity server需要一对public和private key. 幸运的是, 我们可以告诉identity server在程序的运行时候对这项工作进 ...
- ASP.NET Core使用HttpClient的同步和异步请求
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.I ...
- 为奋战在HIS创新路上的医院信息科赋能
为奋战在HIS创新路上的医院信息科赋能 南京都昌信息科技有限公司 袁永福 2017-7 ◆◆前言 近日,上海瑞金医院向我司表示:“我院从2000年开始自主开发医院信息系统,走出了一条可持续的信息化发展 ...
- 更改电脑名称后, Cnario无法播放画面和声音, 开机后停留在桌面, Cnario Player软件界面的停止按钮为蓝色可选状态
症状描述 Cnario Player正常工作期间, 更改了电脑的Windows系统计算机名称(不是登录Windows的用户名), 重启后, 新计算机名生效. 此时Cnario自动启动, 但没有进入播放 ...
- yum 安装fuser命令
yum install -y psmisc 转自:https://www.cnblogs.com/saneri/p/5465718.html 有时候我们需要umount某个挂载目录时会遇到如下问题: ...
- EntityFramework Core笔记:表结构及数据基本操作(2)
1. 表结构操作 1.1 表名 Data Annotations: using System.ComponentModel.DataAnnotations.Schema; [Table("R ...