Java动态添加字段class_javassist动态增加类属性
时间: 2023-07-31 16:04:01 浏览: 72
可以使用javassist库来实现Java动态添加字段。下面是一个简单的示例代码:
```java
import javassist.*;
public class DynamicFieldAdder {
public static void main(String[] args) throws Exception {
// 创建类池
ClassPool cp = ClassPool.getDefault();
// 创建一个新类
CtClass cc = cp.makeClass("NewClass");
// 新增一个字段
CtField f = new CtField(CtClass.intType, "newField", cc);
cc.addField(f);
// 将类保存到文件系统
cc.writeFile();
// 加载新类并创建实例
Class<?> clazz = Class.forName("NewClass");
Object obj = clazz.newInstance();
// 设置新字段的值
clazz.getDeclaredField("newField").set(obj, 123);
// 打印新字段的值
System.out.println(clazz.getDeclaredField("newField").get(obj));
}
}
```
在这个示例中,我们使用javassist库创建一个名为"NewClass"的新类,并在其中添加了一个名为"newField"的int类型的字段。然后,我们将类保存到文件系统,并使用反射机制加载新类并创建实例。最后,我们设置新字段的值并打印它。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)