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的更多相关文章

  1. JAVA反射系列之Field,java.lang.reflect.Field使用获取方法

    JAVA反射系列之Field,java.lang.reflect.Field使用获取方法.   转载https://my.oschina.net/u/1407116/blog/209383 摘要 ja ...

  2. java.lang.reflect操作对象属性(域)的值

    package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  3. JAVA中反射机制五(java.lang.reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  4. Java 错误提示org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

    java 操作excel文件 发布后报错 org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException XSS ...

  5. Java反射API研究(2)——java.lang.reflect详细内容与关系

    对于最新的java1.8而言,reflect中接口的结构是这样的: java.lang.reflect.AnnotatedElement java.lang.reflect.AnnotatedType ...

  6. JAVA中反射机制六(java.lang.reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  7. 错误: java.lang.reflect.InvocationTargetException

    错误: java.lang.reflect.InvocationTargetException    at sun.reflect.NativeMethodAccessorImpl.invoke0(N ...

  8. 自己写一个java.lang.reflect.Proxy代理的实现

    前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...

  9. java.lang.reflect.Method

    java.lang.reflect.Method 一.Method类是什么 Method是一个类,位于java.lang.reflect包下. 在Java反射中 Method类描述的是 类的方法信息, ...

随机推荐

  1. 【bzoj3624】Apio2008—免费道路

    http://www.lydsy.com/JudgeOnline/problem.php?id=3624 (题目链接) 题意 给出一张无向图,其中有0类边和1类边.问能否构成正好有K条0类边的生成树, ...

  2. C语言之socket获取网页源码

    写爬虫也许你用的是python,类似urlopen(url).read()即可获得普通的网页的源码,或者用的java的网络库加上流操作,或者其他高级语言.但你有没有想过使用C语言来实现呢?我曾经以为用 ...

  3. 关于 android 开发中 debug不能顺利进行的各种问题的总结

    最后一条应该写反了,如果combined hover  取消勾选的话   那么 在写代码时候的悬浮提示就没有了

  4. JavaScript 写几个简单的知识点

    首先,还是用比较官方的文字描述来解释下JavaScript: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  5. AngularJs ngReadonly、ngSelected、ngDisabled

    ngReadonly 该指令将input,textarea等文本输入设置为只读. HTML规范不允许浏览器保存类似readonly的布尔值属性.如果我们将一个Angular的插入值表达式转换为这样的属 ...

  6. ARPSpoofing教程(二) - 获取网络设备中的详细地址信息

    WinPcap中文API  http://www.ferrisxu.com/WinPcap/html/index.html 1: #include"pcap.h" 2: #incl ...

  7. POJ2528Mayor's posters(离散化 + 线段树)

    题目链接: 题意:给定一些高度都相同的海报去贴,问最后能看见几张海报 The picture below illustrates the case of the sample input. { 8,9 ...

  8. Python 培训之MySql

    1. Install  1.1 install mysql sudo apt-get install lamp-server^ (tip: Set password) 1.2 install MySQ ...

  9. linux系统命令

    TOP命令 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程, 即可以通过用户按键来不断刷新当前状态.如 ...

  10. IIS Express 外部访问

    http://blog.csdn.net/zhangjk1993/article/details/36671105