码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang.reflect.Field

时间:2016-11-02 01:05:15      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:语言   注解   dem   set   field类   mod   ati   field   tty   

java.lang.reflect.Field

一、Field类是什么
  Field是一个类,位于java.lang.reflect包下。
  在Java反射中 Field类描述的是 类的属性信息,通俗来讲 有一个类如下:

 1 package com.testReflect;
 2 public class FieldDemo {
 3     public int num1 = 1;
 4     protected int num2 = 2;
 5     int num3 = 3;
 6     private int num4 = 4;
 7     
 8     public String s1 = "a";
 9     protected String s2 = "b";
10     String s3 = "c";
11     private String s4 = "d";
12 }

  在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类中常用的方法
  对于类中的属性,我们常用的操作:获取属性的值、修改属性的值。

 1 package com.testReflect;
 2 
 3 import java.lang.reflect.Field;
 4 import java.lang.reflect.Modifier;
 5 
 6 public class FieldTest {
 7     public static void main(String[] args) throws Exception {
 8         //使用反射第一步:获取操作类FieldDemo所对应的Class对象
 9         Class<?> cls = Class.forName("com.testReflect.FieldDemo");
10         //使用FieldDemo类的class对象生成 实例
11         Object obj = cls.newInstance();
12                 
13         //通过Class类中getField(String name): 获取类特定的方法,name参数指定了属性的名称
14         Field field = cls.getField("num1");        
15 
16         //拿到了Field类的实例后就可以调用其中的方法了
17         
18         //方法:getModifiers()  以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符
19         System.out.println("修饰符:  " + Modifier.toString(field.getModifiers()));
20 
21         //方法:getType()  返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型
22         System.out.println("类型:  "+field.getType());
23         
24         //方法:get(Object obj) 返回指定对象obj上此 Field 表示的字段的值
25         System.out.println("属性值:  "+field.get(obj));
26         
27         //方法: set(Object obj, Object value)  将指定对象变量上此 Field 对象表示的字段设置为指定的新值
28         field.set(obj, 55);
29         System.out.println("修改属性值后 --> get(Object obj):  "+field.get(obj));
30     }
31 }

 

java.lang.reflect.Field

标签:语言   注解   dem   set   field类   mod   ati   field   tty   

原文地址:http://www.cnblogs.com/xinhuaxuan/p/6019510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!