Codenameone Bigdecimal在属性中解析为Double?
我正在重写我的一个应用程序的核心,其中一个主要变化是将我的实体迁移到Codenameone Bigdecimal在属性中解析为Double?,codenameone,Codenameone,我正在重写我的一个应用程序的核心,其中一个主要变化是将我的实体迁移到PropertyBusinessObjects 我编写了一个小工具,从我的服务器端jpaenties编写PropertyBusinessObjects,以限制愚蠢的复制粘贴所花费的时间,并利用我的工作负载,因此几乎所有CN1实体都被重写为PBO 为了不重写使用经典getter/setters的所有代码,我在生成代码中添加了创建伪getter/setters,以获得这种结果: protected Property<Strin
PropertyBusinessObjects
我编写了一个小工具,从我的服务器端jpaenties
编写PropertyBusinessObjects
,以限制愚蠢的复制粘贴所花费的时间,并利用我的工作负载,因此几乎所有CN1实体都被重写为PBO
为了不重写使用经典getter/setters
的所有代码,我在生成代码中添加了创建伪getter/setters
,以获得这种结果:
protected Property<String, Product> reference = new Property<>("reference");
public String getReference() {
return this.reference.get();
}
public void setReference(String reference) {
this.reference.set(reference);
}
有什么想法或线索可以解决这个问题吗?在属性中解析/放置
BigDecimal
或biginger
没有逻辑。这可能是我们将来应该添加的内容,但是作为一种解决方法,我们有一种通用的扩展机制,可以让您自定义此代码
我还没有尝试过这一点,但它通常会起作用:
MapAdapter m = new MapAdapter(BigDecimal.class) {
public void placeInMap(PropertyBase b, Map m) {
// this might be unnecessary
m.put(b.getName(), b.get());
}
public void setFromMap(PropertyBase b, Map m){
long d = (long)(m.get(b.getName()) * 10000);
b.setImpl(new BigDecimal(new BigInteger(d), 5));
}
};
谢谢Shai,我忘了我已经在另一个应用程序中使用了枚举属性。它在读取数据时工作良好,我还没有尝试过编写json,但它也应该工作,如果不工作,我知道在哪里对代码进行微调。
MapAdapter m = new MapAdapter(BigDecimal.class) {
public void placeInMap(PropertyBase b, Map m) {
// this might be unnecessary
m.put(b.getName(), b.get());
}
public void setFromMap(PropertyBase b, Map m){
long d = (long)(m.get(b.getName()) * 10000);
b.setImpl(new BigDecimal(new BigInteger(d), 5));
}
};