[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),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
随机推荐
- Atitit USRqc62204 证书管理器标准化规范
Atitit USRqc62204 证书管理器标准化规范 /atiplat_cms/src/com/attilax/cert/CertSrv4mv.java /** * */ package com. ...
- fir.im Weekly - Stanford 的 Swift 课程来了
上周提过,Swift 的 Github 主页上已经有了 >>「Port to Android」,这周重点推荐一下 Stanford 的 Swift 课程. Developing iOS 9 ...
- How Google TestsSoftware - Part Three
Lots of questions in thecomments to the last two posts. I am not ignoring them. Hopefully many of th ...
- :after和:before炫酷用法总结
引入 提到伪类,在我的印象中最常用的不过是:hover.:active.:link.:visited,还有css3里的常用伪类选择器:last-child.:first-child.nth-child ...
- Markdown快速入门
现在博文写作次数渐渐变多,经常看到很多园友的博文样式都非常的美观,个人虽然是个土鳖,但对美也是有很强需求的,同时由于最近将要上线一个博客项目,因此也很关心如何可以更高效的编辑和发布博文.之前一直使用w ...
- JSON学习之二
1.JSON语法是JavaScript对象表示法的子集,语法规则: **数据在名称/值对中 **数据由逗号分隔 **花括号保存对象 **方括号保存数组 2.JSON名称/值对:JSON数据的书写格式是 ...
- Unity 产生各不相同的随机数
1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter ...
- 为大家分享一个 Ajax Loading —— spin.js
我们在做Ajax 异步请求的时候,一般都会利用一个动态的 Gif 小图片来制作一个Ajax Loading ,以便增加用户体验. 今天在网上发现了一个 Spin.js ,该 js 脚本压缩后5k,可以 ...
- BOM之window对象
双重角色 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过Javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Glob ...
- java.util.Arrays.sort两种方式的排序(及文件读写练习)
import java.io.*; import java.util.*; public class SortTest{ public static void main(String args[]) ...