一、Field
- Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。
- 反射的字段可能是一个类(静态)字段或实例字段。
- Array 允许在执行 get 或 set 访问操作期间进行扩展转换,但如果将发生收缩转换,则抛出一个 IllegalArgumentException。
二、常用方法
public final class Field extends AccessibleObject implements Member { //没有构造方法 //返回指定对象上此 Field 表示的字段的值。如果该值是一个基本类型值,则自动将其包装在一个对象中 public Object get(Object obj) throws IllegalArgumentException, IllegalAccessException{} //获取一个静态或实例 boolean 字段的值 public boolean getBoolean(Object obj) throws IllegalArgumentException, IllegalAccessException{} public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException{} public char getChar(Object obj) throws IllegalArgumentException, IllegalAccessException{} getShort getInt getLong getFloat getDouble //将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException{} public void setBoolean(Object obj, boolean z) throws IllegalArgumentException, IllegalAccessException{} setByte setChar setShort setInt setLong setFloat setDouble }
三、示例
package day23; import java.lang.reflect.*; public class ReflectDemo { public static void main(String[] args) { ReflectPoint rep = new ReflectPoint(3,5); Field fieldX = rep.getClass().getField("x"); System.out.println(fieldX);//public int day23.ReflectPoint.x System.out.println(fieldX.get(rep));//3 //Field fieldY = rep.getClass().getField("y"); 不能访问private Field fieldY = rep.getClass().getDeclaredField("y"); fieldY.setAccessible(true);//设置访问权限 System.out.println(fieldY.get(rep)); } } class ReflectPoint { public int x; private int y; public ReflectPoint(int x,int y) { this.x = x; this.y = y; } }
package day23; import java.lang.reflect.*; /** * 将任意一个对象中的所有String类型的成员变量所对应的字符串内容中的‘b’改成‘a’ */ public class ReflectDemo { public static void main(String[] args) throws Exception { ReflectPoint rep = new ReflectPoint(3,5); System.out.println(rep); changeStringValue(rep); System.out.println(rep); } private static void changeStringValue(Object obj) throws Exception { Field[] fields = obj.getClass().getFields(); for(Field field : fields) { //getType得到字段的类型 if(field.getType() == String.class) { String value = (String) field.get(obj); if(value.contains("b")) { value = value.replace("b","a"); field.set(obj, value); } } } } } class ReflectPoint { public int x; private int y; public String str1 = "abbcd"; public String str2 = "ball"; public String str3 = "ccccc"; public ReflectPoint(int x,int y) { this.x = x; this.y = y; } public String toString() { return str1+":"+str2+":"+str3; } }
相关推荐
java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier;
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; ...
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class ReflectionTest { public static void main(String[] args) { Class c = null; try { ...
用以执行和JDK反射API中java.lang.Class,,java.lang.reflect.Method,, java.lang.reflect.Method .Field相同的操作。这些类可以使你在目标类被加载前,轻松的获得它的结构,函数,以及属性。此外,不仅仅是在功能...
java反射(reflect)
//构造方法 java.lang.reflect.Field; //类的成员变量 java.lang.reflect.Method;//类的方法 java.lang.reflect.Modifier;//访问权限 Java高级程序设计实战教程第三章-Java反射机制全文共15页,当前为第6页。 3.2.4 ...
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Collection; import java.util.Vector; public class ProxyTest { public ...
本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,...import java.lang.reflect.Field; import java.ut
我看了几个文章,主要是接受配对广播,然后设置pin,实现配对,但是网上的大部分手机是不可以的,Android....import java.lang.reflect.Field; import android.bluetooth.BluetoothAdapter; import android.bluetooth
import java.lang.reflect.InvocationTargetException; /** * A demo PDF Viewer application. */ public class PDFViewer extends JFrame implements KeyListener, TreeSelectionListener, PageChangeListener...
写在前面的话 本篇blog实现了GridView的拖拽功能。方法和上一篇自定义ListView实现拖拽ListItem项交换位置一个原理。只是在交换位置上记录了X轴... import java.lang.reflect.Field; import java.util.ArrayList; impor
import java.lang.reflect.Field; import java.lang.reflect.Method; /** * */ /** * @ClassName: ReflectTest * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2013年11...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它...本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。
Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。...
Java反射技术的核心在于java.lang.reflect包,它提供了一系列类和接口,用于在运行时获取关于类和对象的信息,并进行相应的操作。主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的...
import java.lang.reflect.InvocationTargetException; public class SimpleTest { /** *//** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { Constructor...
Android开发中我们经常需要用到将dip、px相互换算、获取手机屏幕的宽度...import java.lang.reflect.Field; /** * @author: xiaolijuan * @description: 屏幕分辨率工具类 * @date: 2016-06-05 * @time: 22:55 */
实现思路:利用单向链表来保存队列的数据,在往队列中添加元素的时候,新建一个...import java.lang.reflect.Field; public class MyLinkQueue { //头节点 private volatile Node head; //尾节点 private volati
下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文实例讲述了Android开发中解析xml文件...import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import android.util.Log; import android.ut