java.lang.reflect.Field
java.lang.reflect.Field
一、Field类是什么
Field是一个类,位于java.lang.reflect包下。
在Java反射中 Field类描述的是 类的属性信息,通俗来讲 有一个类如下:
package com.testReflect;
public class FieldDemo {
public int num1 = 1;
protected int num2 = 2;
int num3 = 3;
private int num4 = 4; public String s1 = "a";
protected String s2 = "b";
String s3 = "c";
private String s4 = "d";
}
在Java反射中FieldDemo类中的属性: num1、num2、num3、num4 都是Field类的实例,这个Field类的实例描述了属性的全部信息。(包括:属性名称、属性类型、属性修饰符、属性注解 等等)
二、如何获取Field类对象
一共有4种方法,全部都在Class类中:
- getFields(): 获取类中public类型的属性
- getField(String name): 获取类特定的方法,name参数指定了属性的名称
- getDeclaredFields(): 获取类中所有的属性(public、protected、default、private),但不包括继承的属性。
- getDeclaredField(String name): 获取类特定的方法,name参数指定了属性的名称
三、Field类中常用的方法
对于类中的属性,我们常用的操作:获取属性的值、修改属性的值。
package com.testReflect; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; public class FieldTest {
public static void main(String[] args) throws Exception {
//使用反射第一步:获取操作类FieldDemo所对应的Class对象
Class<?> cls = Class.forName("com.testReflect.FieldDemo");
//使用FieldDemo类的class对象生成 实例
Object obj = cls.newInstance(); //通过Class类中getField(String name): 获取类特定的方法,name参数指定了属性的名称
Field field = cls.getField("num1"); //拿到了Field类的实例后就可以调用其中的方法了 //方法:getModifiers() 以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符
System.out.println("修饰符: " + Modifier.toString(field.getModifiers())); //方法:getType() 返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型
System.out.println("类型: "+field.getType()); //方法:get(Object obj) 返回指定对象obj上此 Field 表示的字段的值
System.out.println("属性值: "+field.get(obj)); //方法: set(Object obj, Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值
field.set(obj, 55);
System.out.println("修改属性值后 --> get(Object obj): "+field.get(obj));
}
}
java.lang.reflect.Field的更多相关文章
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法
JAVA反射系列之Field,java.lang.reflect.Field使用获取方法. 转载https://my.oschina.net/u/1407116/blog/209383 摘要 ja ...
- java.lang.reflect操作对象属性(域)的值
package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...
- JAVA中反射机制五(java.lang.reflect包)
一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...
- Java 错误提示org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
java 操作excel文件 发布后报错 org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException XSS ...
- Java反射API研究(2)——java.lang.reflect详细内容与关系
对于最新的java1.8而言,reflect中接口的结构是这样的: java.lang.reflect.AnnotatedElement java.lang.reflect.AnnotatedType ...
- JAVA中反射机制六(java.lang.reflect包)
一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...
- 错误: java.lang.reflect.InvocationTargetException
错误: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(N ...
- 自己写一个java.lang.reflect.Proxy代理的实现
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...
- java.lang.reflect.Method
java.lang.reflect.Method 一.Method类是什么 Method是一个类,位于java.lang.reflect包下. 在Java反射中 Method类描述的是 类的方法信息, ...
随机推荐
- 【BZOJ-3786】星系探索 Splay + DFS序
3786: 星系探索 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 647 Solved: 212[Submit][Status][Discuss] ...
- 【BZOJ-1121】激光发射器SZK 物理 + 数学 + 乱搞
1121: [POI2008]激光发射器SZK Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 682 Solved: 565[Submit][Sta ...
- 在数据库中如果组合主键(假设为stuID和stuName)存在则更新,不存在则新增
这是今天在项目中遇到的问题,后来查了一下,有的网友说可以用存储过程,但自己现在还不会用,所以下记载下来,做为学习存贮过程的引子. 现在是在java中实现了这个if的逻辑,
- C++ essentials 之 union
Extraction from The C++ Programming Language 4th. edition, Bjarne Stroustrup [8.1] A struct is a seq ...
- ARPSpoofing教程(四) - 捕获并分析数据包
本程序的主要目标是展示如何解析所捕获的数据包的协议首部. 这个程序可以称为UDPdump,打印一些网络上传输的UDP数据的信息. 1: #include"pcap.h" 2: ty ...
- Altium Designer 15 --- Nets Update
Now I want to introduce the use of 'Configure Physical Nets', as follows: If you has finished the PC ...
- C中的字符串实例
1.#include <stdio.h>#include <assert.h>size_t strlen(const char* s){ return ( assert( ...
- nodejs fs module
fs.watchFile(filename[, options], listener)# Added in: v0.1.31 filename <String> | <Buffer& ...
- UIButton 的属性与方法
UIButton *btn=[UIButtonbuttonWithType:UIButtonTypeCustom];//一般都是设置为该类型 btn.frame=CGRectMake(100, 80, ...
- ubuntu下samba服务器的安装与配置
参考网址:http://jingyan.baidu.com/album/00a07f38b9194082d028dc08.html?picindex=9 sudo service smbd resta ...