比较对象和枚举类?

时间:2017-06-03 21:40:43

标签: java

我有枚举课,类似这样:

public enum ProductCategory {
    FOOD("FOOD"), 
    BEVERAGE("BEVERAGE"), 
    DEFAULT("DEFAULT");

    private final String label;

    private ProductCategory(String label) {
        this.label = label;
    }

    public String getLabel() {
        return label;
    }
}

我想编写基于ProductCategory比较两个对象的方法。因此,如果两个对象具有相同的类别(例如:FOOD),则该方法将返回true。

public boolean searchFilterFunction(Object firstObject, Object secondObject) {
    if(firstObject==null || secondObject==null)
        return false;

    //code?
    return true;
}

Enum类在一个包中,我想写的方法在另一个包中。有人可以给我一些提示吗?

2 个答案:

答案 0 :(得分:2)

  

我想编写基于ProductCategory

比较两个对象的方法

Java对象没有关联的ProductCategory

如果您的自定义对象有一个,您可以编写一个方法来检查它,就好像它是一个基本类型:

public boolean searchFilterFunction(Product one, Product two) {
    return one != null
        && two != null
        && one.getProductCategory() == two.getProductCategory();
}

答案 1 :(得分:1)

枚举常数是单例,在这种情况下,可以使用'=='运算符方便地测试它们的相等性(因为对于单身人士来说,价值永远不能与身份分开......对于普通人来说这不是真的对象实例)。例如:

<form>
  <input type="radio" 
         id="quotation_request_payment_option_lease" 
         name="quotation_request_payment_option" 
         value="finance" checked>
  <input type="radio"  
         id="quotation_request_payment_option_finance" 
         name="quotation_request_payment_option"
         value="finance">
  <input type="text" 
         name="quotation_request_payment_option_lease"
         placeholder="1300" 
         class="quotation_request_down_payment"
         value="1300">
  <input type="text" 
         name="quotation_request_payment_option_finance"
         placeholder="1500" 
         class="quotation_request_down_payment"
         value="1500">
</form>

如果您需要测试任意类型的任意对象与枚举的相等性,那么您不需要重新发明轮子。方便类if (thisEnum == ProductCategory.FOOD) System.out.println("It's a food"); 中已经有一个null安全方法可以执行此操作:

Objects