Java 如何在不使用枚举的情况下编写干净的代码

Java 如何在不使用枚举的情况下编写干净的代码,java,java-8,Java,Java 8,我有一个枚举如下 public enum ProductType{ P1("Pone") P2("Ptwo") public String value; public String getValue(){ return value; } public Product fromValue(Brand b){ if(b.equals("A")){ return P1; else return P2

我有一个枚举如下

public enum ProductType{

 P1("Pone")
 P2("Ptwo")

 public String value;

  public String getValue(){
      return value;
  } 

 public Product fromValue(Brand b){
     if(b.equals("A")){
         return P1;
     else
         return P2
     }
}
下面是我如何使用它

Class ABC{

        public String getProductName(Brand b){
           return ProductType.fromValue(b).getName();
      }
}

如何在不使用枚举的情况下实现相同的功能。我希望能够在不使用ENUM的情况下从brand返回ProductName。不清楚为什么要避免使用ENUM,但这里有一个等效的Java-5之前的版本。您的代码错误百出,因此我做了一些假设和更正:

public class ProductType {
    public static final ProductType P1 = new ProductType("Pone");
    public static final ProductType P2 = new ProductType("Ptwo");

    private final String value;

    private Product(String value) {
        this.value = value;
    }

    public String getValue() {
        return this.value;
    }

    public ProductType fromValue(String value) {
        return value.equals(P1.value) ? P1
               value.equals(P2.value) ? P2 : null;
    }
}

如果您提供的代码片段实际上已编译,我会感到惊讶。请编辑您的问题,以便我们能够理解您的要求。请阅读这篇关于如何提问的文章:您为什么讨厌枚举?您的代码毫无意义。将错位的
{
}
放在一旁,在
if(b.equals(“A”)
行中,您正在检查
品牌的一个实例是否等于
字符串的一个实例,该实例将始终为
false
。当然,如果没有
ProductType
类:
public String getProductName(Brand b){return b.equals(“A”)?“Pone”:“Ptwo”}您也可以做同样的事情。
我不想创建对象ProductType,但可能需要使用转换器?请澄清您正在尝试做什么以及为什么。