【问题标题】:Set Value to Enum - Java将值设置为枚举 - Java
【发布时间】:2011-08-25 13:56:13
【问题描述】:

我正在尝试在我的 java 应用程序中设置枚举值....但我做不到。

我做错了吗???

public enum RPCPacketDataType {
    PT_UNKNOWN(2),
    PT_JSON(4),
    PT_BINARY(5)
};

它给了我这个错误:构造函数 RPCPacket.RPCPacketDataType(int) 未定义。

【问题讨论】:

    标签: java android enums


    【解决方案1】:
    public enum RPCPacketDataType
    {
        PT_UNKNOWN(2),
        PT_JSON(4),
        PT_BINARY(5);
    
        RPCPacketDataType (int i)
        {
            this.type = i;
        }
    
        private int type;
    
        public int getNumericType()
        {
            return type;
        }
    }
    

    您还可以像在“普通”类中一样在枚举上定义方法。

     System.out.println(RPCPacketDataType.PT_JSON.getNumericType() // => 4
    

    【讨论】:

    • 我还有一个问题。我该怎么做这样的事情: RPCPacketDataType currentType; if(currentType!=PT_JSON) return;
    • 我会使用 switch 枚举:switch (currentType) { case PT_JSON: ... }
    • 其实我只需要检查 PT_JSON,这就是我使用 if 语句的原因。但是谢谢你的提前!
    【解决方案2】:

    您应该创建一个接受int 参数的构造器。还要添加一个 int 字段来保存传递的值。

    public enum RPCPacketDataType {
        PT_UNKNOWN(2),
        PT_JSON(4),
        PT_BINARY(5);
    
        private int mValue;
    
        RPCPacketDataType(int value) {
            mValue = value;
        }
    }
    

    【讨论】:

    • 您可能还想添加一个 getter 以便稍后访问该值。
    • 我希望自己可以轻松地为这个类添加任何方法。问题是关于添加值而不是检索它们:)
    【解决方案3】:
    public enum RPCPacketDataType { 
    
      PT_UNKNOWN(2), 
      PT_JSON(4),
      PT_BINARY(5); 
    
      private int type;
    
      RPCPacketDataType(int type) { 
        this.type = type; 
      }
    
      public int getNumericType() {
        return type;
      }
    
      public void setNumericType(int type) {
        this.type = type;
      }
    
      public static void main(String[] args) {
        RPCPacketDataType.PT_UNKNOWN.setNumericType(0);
        System.out.println("Type: "+RPCPacketDataType.PT_UNKNOWN.getNumericType()); 
        // Type: 0
      }
    
    }
    

    正如 #emboss 和 #Michael 所说的那样,您可以使用接受 ant int 的 Contructor

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 2021-08-23
      • 2011-11-14
      • 2016-06-27
      • 2011-05-19
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多