枚举支持和自定义逻辑在领域对象类的设置



我在领域对象类中实现setter和enum中的自定义逻辑,就像这样-

public class SellerProducts extends RealmObject{
    public Boolean isValid=true;
    public String is_valid="";
    public String quantity;
    public int quantity_;
    public String enumvalue;
    public void setIs_valid(String is_valid){
        if (is_valid.equals("0")) {
            this.isValid = false;
        }
        this.is_valid=is_valid;
    }
    public String getIs_valid(){
        return this.is_valid;
    }
    public void setQuantity(String quantity){
        this.quantity=quantity;
        try {
            quantity_ = Integer.parseInt(this.quantity);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        if (!this.isValid) {
            setEnum(ProductType.IN_ACTIVE);
        } else if (this.quantity_ <= 0) {
            setEnum(ProductType.OUT_OF_STOCK);
        } else {
            setEnum(ProductType.ACTIVE);
        }
    }
    public String getQuantity(){
        return this.quantity;
    }
    public enum ProductType {
        ACTIVE, IN_ACTIVE, OUT_OF_STOCK
    };
    public void setEnum(ProductType val) {
        this.enumvalue=val.toString().toUpperCase();
    }
    public ProductType getEnum() {
        return ProductType.valueOf(enumvalue);
    }
}

当我从其他片段类调用getEnum时,它会像这样返回空异常

*java.lang.NullPointerException: name == null
at java.lang.Enum.valueOf(Enum.java:189)
at com.localwizard.realm_db.SellerProducts$ProductType.valueOf(SellerProducts.java:331)
at com.localwizard.realm_db.SellerProducts.getEnum(SellerProducts.java:348)*

我是新的领域,所以我不知道我错在哪里?

Ashish,我认为你没有设置ProductType enum并试图得到它,你得到了异常。这是我尝试过的代码,它工作得很好-

public class OtherFragment {
    public static void main(String[] aa)
    {
        SellerProducts sp = new SellerProducts();
        sp.setQuantity("10"); // setting the quantity
        System.out.println(sp.getEnum()); // ACTIVE is set as Enum
        System.out.println(sp.getQuantity()); // 10
        System.out.println(sp.getEnum() == ProductType.ACTIVE); // true
        sp.setEnum(ProductType.IN_ACTIVE); // Now IN_ACTIVE is set
        System.out.println(sp.getEnum() == ProductType.ACTIVE); // false
    }
}

如果这不是你想要的,那么请添加你的代码的和平,你打算如何设置数量,并试图获得枚举值。

如果回答了你的问题,那么请接受这个答案。

相关内容

  • 没有找到相关文章

最新更新