AIO技术框架实战:从内容生成到智能分发的全链路设计
2026/7/23 1:53:20
在反射 API 中,Field对象表示类中的一个成员变量。
通过Field我们可以:
private,只要设置可访问)Class提供了四组方法来查找字段:
| 方法 | 返回单个字段/数组 | 是否包含继承字段 | 是否包含私有字段 |
|---|---|---|---|
getDeclaredField(String) | 单个字段 | ❌ 不包含继承 | ✅ 包含私有 |
getField(String) | 单个字段 | ✅ 包含继承 | ❌ 仅 public |
getDeclaredFields() | 数组 | ❌ 不包含继承 | ✅ 包含私有 |
getFields() | 数组 | ✅ 包含继承 | ❌ 仅 public |
📌口诀:
ArrayList的所有字段importjava.lang.reflect.*;importjava.util.*;publicclassFieldDemo{publicstaticvoidmain(String[]args)throwsException{Class<?>arrayListClass=Class.forName("java.util.ArrayList");Field[]fields=arrayListClass.getDeclaredFields();Arrays.stream(fields).forEach(field->System.out.println("Field: "+field.getName()+" declared in "+field.getDeclaringClass().getSimpleName()+" "+Modifier.toString(field.getModifiers())));}}Field:serialVersionUID declared inArrayListprivatestaticfinalField:DEFAULT_CAPACITYdeclared inArrayListprivatestaticfinalField:EMPTY_ELEMENTDATAdeclared inArrayListprivatestaticfinalField:DEFAULTCAPACITY_EMPTY_ELEMENTDATAdeclared inArrayListprivatestaticfinalField:elementData declared inArrayListtransientField:size declared inArrayListprivateField:MAX_ARRAY_SIZEdeclared inArrayListprivatestaticfinal✅说明:
ArrayList自己声明的所有字段(包括private、static等)。ArrayList的所有public 字段Class<?>arrayListClass=Class.forName("java.util.ArrayList");Field[]fields=arrayListClass.getFields();System.out.println("Public fields for ArrayList: "+fields.length);PublicfieldsforArrayList:0✅说明:
ArrayList及其父类(如AbstractList、AbstractCollection、Object)都没有public字段。0。getDeclaredFields()→ 当前类,所有字段(含私有)。getFields()→ 当前类 + 父类,仅 public 字段。field.get(obj)field.set(obj, newValue)field.setAccessible(true)(需注意安全风险)