【问题标题】:Can't get simple Enum example to work无法让简单的枚举示例工作
【发布时间】:2012-12-05 08:55:45
【问题描述】:

我创建了一个简单的枚举

public interface Params
{
  public enum Locale 
  {
      UK("UK"), US("US");
      private String value;

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

....

这是我要修改的方法以获取 Params.Locale 属性。

    public void doErrorQuery(Locale locale, String p_listStr)
    {
        if (p_spellingList == null)
        {
        result.setError(true);
        result.setErrorMessage("Null spelling list");
        return;
    }

我使用

导入我的语言环境枚举
import com.Params.Locale;

问题是我无法编译它,它告诉我它无法解析语言环境。即使我使用 Params.Locale 它也不起作用,无法解析名称。

【问题讨论】:

  • 你确定接口Params的包名是'com'?
  • 从 void 方法中删除 return 语句。
  • 你能添加你的堆栈跟踪吗?
  • 为什么不将 Locale 枚举声明为自己的 Enum,它没有包含在 Params 中?
  • @Miquel 如果不编译就没有堆栈跟踪。

标签: java enums


【解决方案1】:

您应该为枚举使用自己的枚举类。在我看来,这样做会是一个更干净的设计:

public enum Locale {
   UK("UK"), US("US");
   private String value;

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

【讨论】:

    【解决方案2】:

    暂时忽略设计问题,您的原始代码没有任何问题。也许您的包声明有误?对我来说,以下代码编译得很好:

    Params.java

    package com;
    
    public interface Params {
    
      public enum Locale {
        UK("UK"), US("US");
        private String value;
    
        private Locale(String value) {
          this.value = value;
        }
      }
    }
    

    TestClass.java

    package com;
    
    import com.Params.Locale;
    
    public class TestClass {
    
      public void test(Locale locale) {
        System.out.println("Hello, World!");
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多