[javaSE] 反射-获取类的成员属性和构造方法
成员属性和构造方法皆为对象,通过Class对象的方法可以得到
package com.tsh.reflect; import java.lang.reflect.Constructor;
import java.lang.reflect.Field; public class ReflectDemo {
public static void main(String[] args) {
printClassFields(new Integer(1));
printClassConstructs(new String("ss"));
}
/**
* 打印类的成员属性信息
* @param obj
*/
public static void printClassFields(Object obj){
Class c=obj.getClass();
System.out.println("类的名称:"+c.getName());
System.out.println("类的成员属性:");
Field[] fields=c.getDeclaredFields();
for(Field field:fields){
Class fieldClass=field.getType();
String fieldName=field.getName();
String fieldType=fieldClass.getSimpleName();
System.out.println(fieldType+" "+fieldName);
}
}
/**
* 打印类的构造方法
* @param obj
*/
public static void printClassConstructs(Object obj){
Class c=obj.getClass();
System.out.println("类的名称:"+c.getName());
System.out.println("类的构造方法:");
Constructor[] constructors=c.getDeclaredConstructors();
for(Constructor constructor : constructors){
Class[] paClass=constructor.getParameterTypes();
String name=constructor.getName();
int i=0;
String params=new String();
for(Class param : paClass){
if(i==0){
params+=param.getSimpleName();
}else{
params+=","+param.getSimpleName();
}
i++;
}
System.out.println(name+"("+params+"}");
}
}
}
输出结果:
类的名称:java.lang.Integer
类的成员属性:
int MIN_VALUE
int MAX_VALUE
Class TYPE
char[] digits
char[] DigitTens
char[] DigitOnes
int[] sizeTable
int value
int SIZE
long serialVersionUID
boolean $assertionsDisabled 类的名称:java.lang.String
类的构造方法:
java.lang.String(byte[]}
java.lang.String(byte[],int,int}
java.lang.String(byte[],Charset}
java.lang.String(byte[],String}
java.lang.String(byte[],int,int,Charset}
java.lang.String(int,int,char[]}
java.lang.String(char[],boolean}
java.lang.String(StringBuilder}
java.lang.String(StringBuffer}
java.lang.String(int[],int,int}
java.lang.String(char[],int,int}
java.lang.String(char[]}
java.lang.String(String}
java.lang.String(}
java.lang.String(byte[],int,int,String}
java.lang.String(byte[],int}
java.lang.String(byte[],int,int,int}
[javaSE] 反射-获取类的成员属性和构造方法的更多相关文章
- 使用反射获取类中的属性(可用于动态返回PO类的列,当做表格的表头)
//利用反射取类中的属性字段 try { Class clazz = Class.forName("houji.bean.model.TaskModel"); Field[] fi ...
- java反射获取类的成员函数,成员变量,构造函数
package com.imooc.reflect;import javax.sound.midi.Soundbank;import java.lang.reflect.Constructor;imp ...
- 反射获取类中的属性和set属性
package framework.base; import java.beans.IntrospectionException; import java.beans.PropertyDescript ...
- java 反射获取类的静态属性值
public class AppTest { private NodeClass nodeClass; public static String hehe = "hehe"; pu ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- Java反射学习-1 - 反射获取类的属性,方法,构造器
新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...
- java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包
首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; imp ...
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
随机推荐
- linux命令 - alias
linux命令 - alias 为自己的常用命令语句指定别名,快捷方式 $ alias /? Usage: alias [/reload] [/d] [name=full command] /relo ...
- CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
最近在测试的过程中, 发现了SpringBoar的一个问题: SpringBoard[53] <Error>: CGContextTranslateCTM: invalid context ...
- 【.Net底层剖析】3.用IL来理解属性
.Net底层剖析目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 未完待 ...
- CSS弹性盒模型flex在布局中的应用
× 目录 [1]元素居中 [2]两端对齐 [3]底端对齐[4]输入框按钮[5]等分布局[6]自适应布局[7]悬挂布局[8]全屏布局 前面的话 前面已经详细介绍过flex弹性盒模型的基本语法和兼容写法, ...
- html5遵循的5个设计原则
前面的话 实际上,html5并不是由w3c直接制定的,w3c的方向是xhtml2,而不是html5.当xhtml2脱离现实,无法付诸实践时,w3c工作组才将研究方向转向html5.为什么xhtml2从 ...
- hdu 1811Rank of Tetris (并查集 + 拓扑排序)
/* 题意:这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B,等于B ...
- C++中typename关键字的用法
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
- Socket桥(转载)
最好方案:使用haproxy 或者nginx转发.自己写程序性能和监控难保证,推荐使用开源软件替代. 源地址为:http://baishaobin2003.blog.163.com/blog/stat ...
- tiltShift.js - CSS3 滤镜实现移轴镜头效果
tiltShift.js 是一款很棒的 jQuery 插件,使用 CSS3 图片滤镜来实现照片的移轴镜头效果.使用非常简单,使用 data 属性配置参数.温馨提示:为保证最佳的效果,请在 IE10+. ...
- 采用Kettle分页处理大数据量抽取任务
作者:Grey 原文地址: http://greyzeng.com/2016/10/31/big-data-etl/ 需求: 将Oracle数据库中某张表历史数据导入MySQL的一张表里面. 源表(O ...