网站一直没收录,wordpress快速审批,蜜桃传媒,第三方交易网站怎么做通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组。 getFields()getField(String name)getDeclaredFields()getDeclaredField(String name)上述方法返回的 Field 对象代表一个成员变量。例如#xff0c;要访问一个名称为 price 的成员变量#xff0c;示例代…通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组。 getFields()getField(String name)getDeclaredFields()getDeclaredField(String name)上述方法返回的 Field 对象代表一个成员变量。例如要访问一个名称为 price 的成员变量示例代码如下
object.getDeciaredField(price);Field类的常用方法
方法名称说明getName()获得该成员变量的名称getType()获取表示该成员变量的 Class 对象get(Object obj)获得指定对象 obj 中成员变量的值返回值为 Object 类型set(Object obj, Object value)将指定对象 obj 中成员变量的值设置为 valuegetlnt(0bject obj)获得指定对象 obj 中成员类型为 int 的成员变量的值setlnt(0bject obj, int i)将指定对象 obj 中成员变量的值设置为 isetFloat(Object obj, float f)将指定对象 obj 中成员变量的值设置为 fgetBoolean(Object obj)获得指定对象 obj 中成员类型为 boolean 的成员变量的值setBoolean(Object obj, boolean b)将指定对象 obj 中成员变量的值设置为 bgetFloat(Object obj)获得指定对象 obj 中成员类型为 float 的成员变量的值setAccessible(boolean flag)此方法可以设置是否忽略权限直接访问 private 等私有权限的成员变量getModifiers()获得可以解析出该方法所采用修饰符的整数
示例如何调用 Field 类的方法获取动态类中各个成员的信息。
1 . 首先创建一个 Book 类在该类中依次声明一个 String、int、float 和 boolean 类型的成员并设置不同的访问作用域。Book 类最终的代码如下
public class Book {String name;public int id;private float price;protected boolean isLoan;
}2编写测试类 Test在该类的 main() 方法中通过反射访问 Book 类中的所有成员并将该成员的名称和类型信息输出到控制台。
Test 类的代码如下
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class Test {public static void main(String[] args) {Book book new Book();// 获取动态类BookClass class1 book.getClass();// 获取Book类的所有成员Field[] declaredFields class1.getDeclaredFields();// 遍历所有的成员for(int i 0;i declaredFields.length;i) { // 获取类中的成员变量Field field declaredFields[i];System.out.println(成员名称为 field.getName());Class fieldType field.getType();System.out.println(成员类型为 fieldType);boolean isTurn true;while(isTurn) {try { // 如果该成员变量的访问权限为private则抛出异常isTurn false;System.out.println(修改前成员的值为 field.get(book));// 判断成员类型是否为intif(fieldType.equals(int.class)) {System.out.println(利用setInt()方法修改成员的值);field.setInt(book, 100);} else if(fieldType.equals(float.class)) { // 判断成员变量类型是否为floatSystem.out.println(利用setFloat()方法修改成员的值);field.setFloat(book, 29.815f);} else if(fieldType.equals(boolean.class)) { // 判断成员变量是否为booleanSystem.out.println(利用setBoolean()方法修改成员的值);field.setBoolean(book, true);} else {System.out.println(利用set()方法修改成员的值);field.set(book, Java编程);}System.out.println(修改后成员的值为 field.get(book));} catch (Exception e) {System.out.println(在设置成员变量值时抛出异常下面执行setAccessible()方法);field.setAccessible(true);isTurn true;}}System.out.println(\n);}}
}3 . 运行测试类 Test程序将会依次动态访问 Book 类中的所有成员。访问 name 成员的运行效果如下所示
成员名称为name
成员类型为class java.lang.String
修改前成员的值为null
利用set()方法修改成员的值
修改后成员的值为Java编程访问 id 成员的运行效果如下所示
成员名称为id
成员类型为int
修改前成员的值为0
利用setInt()方法修改成员的值
修改后成员的值为100访问 price 成员的运行效果如下所示
成员名称为price
成员类型为float
在设置成员变量值时抛出异常下面执行setAccessible()方法
修改前成员的值为0.0
利用setFloat()方法修改成员的值
修改后成员的值为29.815访问 isLoan 成员的运行效果如下所示
成员名称为isLoan
成员类型为boolean
修改前成员的值为false
利用setBoolean()方法修改成员的值
修改后成员的值为true