【问题标题】:Creating dynamic POJOs and set values to it创建动态 POJO 并为其设置值
【发布时间】:2013-03-17 05:37:15
【问题描述】:
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();
}

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

【问题讨论】:

  • 您的问题到底是什么?你想把createBeanClass返回的类放到属性HasMap吗?
  • 你在用cglib的BeanGenerator吗?
  • 创建类后,我需要创建该类的一个实例,并为实例的每个变量设置值。

标签: java class dynamic pojo


【解决方案1】:

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 现在已(部分)填充。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2021-08-20
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多