java反射:获取类的成员变量和构造函数
来源:互联网 发布:手机隔墙听软件 编辑:程序博客网 时间:2024/05/21 06:51
前面我们讲到过怎么利用java反射机制获取类的所有方法的信息。那么我们如何利用反射获取类的成员变量以及构造函数的信息呢?
首先我们明确一个概念:成员变量也是对象,我们可以通过成员变量的类类型获取到成员变量的类型
Class c=int.class; System.out.println(c.getName());
则我们会看到控制台输出:int,意味着基本数据类型也是对象,我们可以通过数据类型的类类型获取到它的基本类型
那么成员变量是哪个类的对象呢?成员变量是java.lang.reflect.Field类的对象,该类提供了一些方法是我们能够获取到成员变量的类型、名称等信息,接下来通过一段代码进行测试:
public static void printDataTypeMessage(Object obj) { System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); Class c=obj.getClass(); //Field[] fs=c.getFields();//获取的是所有的public的成员变量, Field[] fs=c.getDeclaredFields();//获取所有自己声明的成员变量的信息 for (Field field : fs) { Class fieldType=field.getType();//得到成员变量的类型的类类型 String typeName=fieldType.getName(); String fieldName=field.getName();//成员变量的名称 System.out.println(typeName+" "+fieldName); }}
获取String类的成员变量:
ClassAPI.printDataTypeMessage("hello");
运行结果为:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[C value
int hash
long serialVersionUID
[Ljava.io.ObjectStreamField; serialPersistentFields
java.util.Comparator CASE_INSENSITIVE_ORDER
由此获取了所有的成员变量,包括公有的和私有的
那么构造函数是对象吗?构造函数也是对象,它是java.lang.Constructor类的对象,我们通过一段代码来测试一下如何获取构造函数的基本信息:
public static void printConstructorMessage(Object obj) { System.out.println("==============================================="); Class c=obj.getClass(); Constructor[] con=c.getDeclaredConstructors();//获得所有的公有的构造方法,构造函数都是自己声明的 for (Constructor constructor : con) { String conName=constructor.getName(); System.out.print(conName+"("); Class[] types=constructor.getParameterTypes();//得到参数列表的类类型 for (Class class1 : types) { System.out.print(class1.getName()+","); } System.out.println(")"); }}
对String类的构造函数和Integer类的构造函数进行测试:
ClassAPI.printConstructorMessage("hello");ClassAPI.printConstructorMessage(new Integer(1));
得到运行结果为:
===============================================
java.lang.String([B,int,int,)
java.lang.String([B,java.nio.charset.Charset,)
java.lang.String([B,java.lang.String,)
java.lang.String([B,int,int,java.nio.charset.Charset,)
java.lang.String([B,int,int,java.lang.String,)
java.lang.String([C,boolean,)
java.lang.String(java.lang.StringBuilder,)
java.lang.String(java.lang.StringBuffer,)
java.lang.String([B,)
java.lang.String([I,int,int,)
java.lang.String()
java.lang.String([C,)
java.lang.String(java.lang.String,)
java.lang.String([C,int,int,)
java.lang.String([B,int,)
java.lang.String([B,int,int,int,)
===============================================
java.lang.Integer(int,)
java.lang.Integer(java.lang.String,)
- java反射:获取类的成员变量和构造函数
- 22、Java入门—反射之获取获取成员变量和构造函数的信息
- 通过反射获取类对象的成员函数、成员变量(只获取成员函数)、构造函数
- Java反射机制:获取成员变量和构造函数的信息
- 使用java反射操作类的构造函数,成员变量和成员方法
- java反射,获取类的方法,成员变量,构造函数信息
- JAVA反射获取成员变量构造函数信息
- Java反射---Class对象,获得类的方法、成员变量和构造函数信息
- Java反射(四)----- 获取成员变量和构造函数信息
- JAVA反射中类的构造函数,成员变量,成员方法的使用
- java反射---获取类的成员变量
- Java学习提要——"反射"获取方法信息(成员函数、成员变量 、构造函数)
- java反射2-获取构造方法、成员变量、成员方法
- Java 获取成员变量&构造函数
- Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质
- Java反射打印类的信息,包括类的成员函数、成员变量(只获取成员函数)
- Java--Reflect(反射)专题4——获取成员变量以及构造函数信息
- 【慕课网笔记】Java 反射机制 4 获取成员变量构造函数信息
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
- CentOS7 防火墙(firewall)使用方法
- Python手记(三):类的继承
- hashset类源码分析
- main之前初始化流程
- java反射:获取类的成员变量和构造函数
- 第三次作业
- VMware 虚拟化编程(12) — VixDiskLib Sample 程序使用
- php程序死循环导致502报错
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
- C 循环
- 微信小程序使用swiper实现侧滑功能
- Unix-Linux编程实践教程——第十一章
- Netty4实战第十二章:SPDY