java field

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java field怎麼使用?下面就一起來了解一下吧~

java在反射時候經常用到了 Field 類。

首先,用到了一個bean類,源代碼如下:

public class fieldDemoBean {    private int a;      public int b;      public String c;      public String d;       public fieldDemoBean(int a, int b,String c,String d) {          this.a = a;          this.b = b;          this.c = c;          this.d = d;      } }

java field

利用 Field 類 使用反射改變屬性值。可以用在修改配置文件上。

import java.lang.reflect.Field;public class ReflectDemoTest {
// 這裏説的Field都是 類 身上的,不是實例上的
public static void main(String[] args) throws Exception {fieldDemoBean pt1 = new fieldDemoBean(3, 5, "ba", "ab");
// 得到一個字段Field fieldB = pt1.getClass().getField("b"); // b 是變量名// fieldB和pt1根本沒有什麼關係,你看,是pt1.getClass(),是 字節碼 啊// 不是pt1對象身上的變量,而是類上的,要用它取某個對象上對應的值System.out.println(fieldB.get(pt1)); // 這才是5Field fieldA = pt1.getClass().getDeclaredField("a"); // 這個管你公的私的,都拿來fieldA.setAccessible(true);// 添加訪問權限,才能訪問私有屬性, 不然會報錯System.out.println(fieldA.get(pt1));swapString(pt1);}//   做一個實例將把一個類裏所有String類型的字段裏的值 b 變 aprivate static void swapString(fieldDemoBean pt1)throws IllegalArgumentException, IllegalAccessException {// get all fieldsField[] fields = pt1.getClass().getFields();for (Field field : fields) {// 我説的是String 類型的字段,當然要選擇一下// if(field.getType().equals(String.class)) {// 字節碼都是一份的,幹什麼用equals啊if (field.getType() == String.class) {String oldValue = (String) field.get(pt1);String newValue = oldValue.replace('b', 'a');// 改 對象的字段field.set(pt1, newValue);}}System.out.println(pt1.c);System.out.println(pt1.d);}}