获取Field成员变量类
位于java.lang.reflect.Field包中
getModifiers() 成员变量修饰符(public、private)
getName() 成员变量名字
getType() 成员变量类型
【获取Field成员变量类】
class.getFields() 获取所有public公有成员变量
class.getField(String name) 获取指定的public公有成员变量
class.getDeclaredFields() 获取所有成员变量
class.getDeclaredFields(String name) 获取指定的成员变量
【获取变量值】【修改变量值,把以下get换成set】
get(Object obj)
getBoolean(Object obj)
getByte(Object obj)
getChar(Object obj)
getDouble(Object obj)
getInt(Object obj)
getLong(Object obj)
getShort(Object obj)

public class Demo {
public static void main(String[] args) {
try {
Class c=Class.forName("Example");//创建Class对象
Field fs[]=c.getDeclaredFields();//获取所有变量
for(Field f:fs){
System.out.print(Modifier.toString(f.getModifiers()));//修饰符
System.out.print(" "+f.getType().getSimpleName());//变量的类型
System.out.println(" "+f.getName());//变量的名字
}
//获取变量的值
//Example中无任何构造方法,但java会自动生成无参数构造方法。
// Constructor cs=c.getDeclaredConstructor();//直接用,获取Example中无参数构造方法
// Object obj=cs.newInstance();//实例化
Object obj=c.newInstance();//实例化Example
Field f=c.getDeclaredField("name");//获取Example中变量name
System.out.println(f.get(obj));//获取值
Field f1=c.getDeclaredField("price");//获取变量name
f1.setAccessible(true);//private变量要获取权限
System.out.println(f1.get(obj));
f1.set(obj,-3.14);//修改price值
System.out.println(f1.get(obj));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
public class Example {
public int id=5;
public String name="反射";
private double price=3.14;
}
获取Field成员变量类的更多相关文章
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一. 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...
- java 27 - 4 反射之 通过反射获取成员变量并使用
类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
一.反射获取成员变量并且使用: 1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...
- Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
1. 反射获取成员变量并且使用: (1)获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); (2) ...
- runtime-对成员变量操作应用之归档和返归档
为了实现归档和返归档,我们要让被归档对象的类接受NSCoding协议并且实现协议里的两个方法 - (void)encodeWithCoder:(NSCoder *)aCoder; - (nullabl ...
- runtime-对成员变量和属性的操作
成员变量 首先我们来看看成员变量在runtime中是什么样的 在runtime中成员变量是一个objc_ivar类型的结构体,结构体定义如下 struct objc_ivar { char *ivar ...
- runtime之玩转成员变量
前言: 不铺垫那么多,单刀直入吧:runtime是一个C和汇编写的动态库,就像是一个小小的系统,将OC和C紧密关联在一次,这个系统主要做两件事情. 1,封装C语言的结构体和函数,让开发者在运行时创建, ...
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...
- 属性(property)与成员变量(ivar)
类内使用成员变量{}, 类外使用属性@property /*********** --- Person.h */ @interface Person : NSObject { NSString *_n ...
随机推荐
- tableView优化思路
一般优化的思路: 提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法. 复杂界面可采用异步绘制. 在大量图片展示时,可以滑动时按需加载. 尽量少用或不 ...
- ResultSet集合查询字段名称(转载)
转自:https://blog.csdn.net/song_litao/article/details/84751351 public List<String> getColumnName ...
- 《Linux内核分析》第13章
<Linux内核设计与实现>第十三章--虚拟文件系统概述 20135211 一.通用文件系统接口 之所以可以使用这种通用接口(VF)对所有类型的文件系统进行操作,是因为内核在它的底层文件系 ...
- 数学战神app(小学生四则运算app)进度
背景音乐仍有瑕疵,还在完善,不过大概完成,完善按钮声音,提示音等. 许家豪:负责代码程序设计 陈思明:界面背景美化 吴旭涛.王宏财:查缺补漏
- BugPhobia进阶篇章:功能规格说明书
0x01 :特别鸣谢 首先特别鸣谢<构建之法>中并没有给出固定化格式的功能规格说明书的样例,因此在此次的说明书中将尽可能用生动形象的例子展示软件交互阐释 因此受到它本身的启发,此次团队功能 ...
- Beta 冲刺 随笔合集
团队展示: Team一二一 Beta 冲刺 凡事预则立 Beta冲刺 一 Beta冲刺 二 Beta冲刺 三 Beta冲刺 四 Beta冲刺 五 Beta冲刺 六 Beta冲刺 七 Beta总结 用户 ...
- VUE的语法笔记
v-model = 'content' {{contents}} //vue 双向视图的绑定 v-text 只能返回一个文本内容 v-html 不仅可以返回文本内容还可以返回html标签 v-for ...
- 表格属性和BFC(block framing content)
th和tr都是表示列但是 th有一个居中加粗的效果. 表单是由 : 1表单域:<form name=" " method="get/post" acti ...
- [日常工作]非Windows Server 系统远程经常断以及提高性能的方法
1. 公司内有不少windows xp windows 7 这样的操作系统的机器在机房里面用来跑自动化脚本或者是其他用处. 经常有人反馈机器过一段时间连不上, 其实这一点是一个非常小的地方 很多机器上 ...
- modern effective C++ -- Deducint Types
1. 理解模板类型推导 1. expr是T& template<typename T> void f(T & param); // 我们声明如下变量 int x = 27; ...