java - 创建动态 POJO 并为其设置值

标签 java class dynamic pojo

final Map<String, Class<?>> properties = new HashMap<String, Class<?>>();
properties.put("jobName", String.class);
properties.put("companyName", String.class);
properties.put("totalApplicantForJob", String.class);        
final Class<?> beanClass = createBeanClass("ApplicantCountVsJobBoards", properties);

public static Class<?> createBeanClass (final String className, final Map<String, Class<?>> properties) {
    final BeanGenerator beanGenerator = new BeanGenerator();
    // NamingPolicy policy = 
    //beanGenerator.setNamingPolicy(null);
    BeanGenerator.addProperties(beanGenerator, properties);
    return (Class<?>) beanGenerator.createClass();
}

如何向这些类对象添加值。

最佳答案

cglib 的 BeanGenerator 不仅生成动态类,还添加访问器方法。那么像这样进行反射方法调用怎么样:

Object instance = beanClass.newInstance(); // Creates a new object of your dynamic class
Method setJobName = beanClass.getMethod("setJobName", String.class); // Gets the setJobName method that takes one String argument
method.invoke(instance, "Super Cool Job");

您的 Bean 现在已(部分)填充。

可能还有更有效的方法,这只是为了向您展示概念。

关于java - 创建动态 POJO 并为其设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653770/

相关文章:

python - 动态访问 Pandas 数据框列

Java Swing的drawString显示回声

java - SASL_SSL 安全协议(protocol)如何工作?客户端是否验证服务器(X.509 证书)?

java - 撒克逊 s9api : When to expect TinyDocumentImpl vs DocumentImpl

python - 如何在 Python 中声明一个静态属性?

c# - 如何从 C# ExpandoObject 按名称动态获取属性?

java - 最后返回 "happen after"吗?

Java 好奇号 : Using a Float or Double for Costs in a Class

javascript - 如何从方法访问构造函数中声明的变量?

php - 包含和 header php 建议