java动态bean,如何动态创建Java bean?

How to create bean/s(retaining column datatype in bean) dynamically after reading columns from table/s in java ?

解决方案

UPDATE

Previous answer was an attempt to solve the issue immediately.

So it's not the final code for FlexBean.

For the final code, visit https://github.com/ramazanpolat/flexbean

OLD ANSWER

I had the same problem so I wrote FlexBean.

public class FlexBean {

private List propertyNames = new ArrayList<>();

private Map propertyValueMap = new LinkedHashMap<>();

private List propertyTypes = new ArrayList<>();

public FlexBean() {

}

public void setProperties(Map props){

for (String propName:props.keySet()){

addProperty(propName, props.get(propName));

}

}

public void addPropertyNames(List propertyNames){

for (String name: propertyNames) {

addProperty(name);

}

}

public Collection getPropertyValues(){

return propertyValueMap.values();

}

public List getPropertyNames() {

return propertyNames;

}

public Map getPropertyValueMap() {

return propertyValueMap;

}

public List getPropertyTypes() {

return propertyTypes;

}

public void addProperty(String propName, Type propType){

propertyNames.add(propName);

propertyTypes.add(propType);

}

public void addProperty(String propName){

// default property type is String

addProperty(propName, String.class);

}

public void addProperty(String propName, Object value){

addProperty(propName);

setProperty(propName, value);

}

public void addProperty(String propName, Type propType, Object value){

addProperty(propName, propType);

setProperty(propName, value);

}

public int getPropertyIndex(String propName){

return propertyNames.indexOf(propName);

}

public Type getPropertyType(String propName){

int index = getPropertyIndex(propName);

return Iterables.get(propertyTypes,index);

}

public void setProperty(String propName, Object propValue){

propertyValueMap.put(propName, propValue);

}

public Object getPropertyValue(String propName){

return propertyValueMap.get(propName);

}

public Any getTypedPropertyValue(String propName){

return (Any)((Any) propertyValueMap.get(propName));

}

public Object getProperty(int propIndex){

return Iterables.get(propertyValueMap.entrySet(),propIndex).getValue();

}

}

Usage:

FlexBean flexBean = new FlexBean();

flexBean.addProperty("prop1", 1); // int inferred

flexBean.addProperty("prop2", "value2"); // string inferred

flexBean.addProperty("prop3", 0.1f); // float inferred

for (Object o: flexBean.getPropertyValues()) {

System.out.println(o);

}

int prop1 = flexBean.getTypedPropertyValue("prop1");

String prop2 = flexBean.getTypedPropertyValue("prop2");

float prop3 = flexBean.getTypedPropertyValue("prop3");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值