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. 启动Hadoop HA Hbase zookeeper spark

    服务器角色 服务器 192.168.58.180 192.168.58.181 192.168.58.182 192.168.58.183 Name CentOSMaster Slvae1 Slave ...

  2. 【codevs1907】 方格取数 3

    http://codevs.cn/problem/1907/ (题目链接) 题意 N*N的方格,每个格子中有一个数,从中取出不相邻的任意个数,使得取到的数的和最大. Solution 裸的二分图带权最 ...

  3. jsp使用servlet实现验证码

    在进行表单设计中,验证码的增加恰恰可以实现是否为“人为”操作,增加验证码可以防止网站数据库信息的冗杂等... 现在,小编将讲述通过servlet实现验证码: 验证码作为一个图片,在页面中为“画”出来的 ...

  4. Nginx 日志分享

    Nginx 日志对于大部分人来说是个未被发掘的宝藏,总结之前做某日志分析系统的经验,和大家分享一下 Nginx 日志的纯手工分析方式. Nginx 日志相关配置有 2 个地方:access_log 和 ...

  5. C#点击按钮关闭当前窗体 打开另一个窗体。

    网上有很多是隐藏当前窗体,但是这样占用资源,效果不好,因此改进方法如下: private void button1_Click(object sender,EventArgs e) { this.hi ...

  6. String、StringBuffer、StringBuilder源码分析

    利用反编译具体看看"+"的过程 1 public class Test 2 { 3 public static void main(String[] args) 4 { 5 int ...

  7. Mac下同时安装多个版本的JDK

    JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7.因此,我需要在我的电脑上同时有JDK8,J ...

  8. 【Beta】团队协作模式探讨试行

    概述 鉴于Alpha阶段松散的结构和低下的效率,以及Scrum会议时间过长.文档不到位.无标准化验收等问题,尝试对协作模式作一点变化. 依照课程压力等实际情况,以及按照贡献分分配原则,以一周为贡献分计 ...

  9. SVM松弛变量-记录毕业论文3

    上一篇博客讨论了高维映射和核函数,也通过例子说明了将特征向量映射到高维空间中可以使其线性可分.然而,很多情况下的高维映射并不能保证线性可分,这时就可以通过加入松弛变量放松约束条件.同样这次的记录仍然通 ...

  10. Android项目结构 以及体系结构

    学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src  主要是 源 ...