如何动态创建然后实例化POJO 类?
How to create and then instantiate POJO classes dynamically?
我的项目的某些规范要求我根据通过 excel sheet 或 JSON 提供的信息创建 POJO classes;然后使用手头的相关信息创建 class 的对象,稍后将在代码中使用这些信息。
从 excel sheet 和 JSON 中提取相关数据不是问题。我什至能够动态创建 POJO classes 多亏了他在上面的回答中提到的 answer. But I'm unsure if it is possible to create objects of this class. As this guy -
But the problem is: you have no way of coding against these methods,
as they don't exist at compile-time, so I don't know what good this
will do you.
是否可以实例化上述答案中创建的class?如果是这样,如何?如果没有,这个问题还有什么其他选择?或者我应该改变我对这个规范的方法并考虑其他选择吗?
您可以使用 reflection to instantiate the generated classses 并访问提供的方法。
可能在你的情况下,我会选择下面这样的东西。这不能是 post 作为评论。所以 post 在这里。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GenericDTO {
private Map<String, List<Object>> resultSetMap = new HashMap<String, List<Object>>() ;
public void addAttribute(String attributeName, Object attributeValue) {
if(resultSetMap.containsKey(attributeName)) {
resultSetMap.get(attributeName).add(attributeValue);
} else {
List<Object> list = new ArrayList<Object>();
list.add(attributeValue);
resultSetMap.put(attributeName, list);
}
}
public Object getAttributeValue(String key) {
return (resultSetMap.get(key) == null) ? null : resultSetMap.get(key).get(0);
}
public List<Object> getAttributeValues(String key) {
return resultSetMap.get(key);
}
}
您可以像这样使用它:
GenericDTO dto = new GenericDTO();
dto.addAttribute("aa", 1);
dto.addAttribute("aa", "aa");
dto.addAttribute("bb", 5);
System.out.println(dto.getAttributeValue("bb"));
System.out.println(dto.getAttributeValues("aa"));
我的项目的某些规范要求我根据通过 excel sheet 或 JSON 提供的信息创建 POJO classes;然后使用手头的相关信息创建 class 的对象,稍后将在代码中使用这些信息。
从 excel sheet 和 JSON 中提取相关数据不是问题。我什至能够动态创建 POJO classes 多亏了他在上面的回答中提到的 answer. But I'm unsure if it is possible to create objects of this class. As this guy -
But the problem is: you have no way of coding against these methods, as they don't exist at compile-time, so I don't know what good this will do you.
是否可以实例化上述答案中创建的class?如果是这样,如何?如果没有,这个问题还有什么其他选择?或者我应该改变我对这个规范的方法并考虑其他选择吗?
您可以使用 reflection to instantiate the generated classses 并访问提供的方法。
可能在你的情况下,我会选择下面这样的东西。这不能是 post 作为评论。所以 post 在这里。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GenericDTO {
private Map<String, List<Object>> resultSetMap = new HashMap<String, List<Object>>() ;
public void addAttribute(String attributeName, Object attributeValue) {
if(resultSetMap.containsKey(attributeName)) {
resultSetMap.get(attributeName).add(attributeValue);
} else {
List<Object> list = new ArrayList<Object>();
list.add(attributeValue);
resultSetMap.put(attributeName, list);
}
}
public Object getAttributeValue(String key) {
return (resultSetMap.get(key) == null) ? null : resultSetMap.get(key).get(0);
}
public List<Object> getAttributeValues(String key) {
return resultSetMap.get(key);
}
}
您可以像这样使用它:
GenericDTO dto = new GenericDTO();
dto.addAttribute("aa", 1);
dto.addAttribute("aa", "aa");
dto.addAttribute("bb", 5);
System.out.println(dto.getAttributeValue("bb"));
System.out.println(dto.getAttributeValues("aa"));