Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试像is valueOf()这样的枚举?_Java_Enums_Value Of - Fatal编程技术网

Java 如何测试像is valueOf()这样的枚举?

Java 如何测试像is valueOf()这样的枚举?,java,enums,value-of,Java,Enums,Value Of,G'day,勘误表。。。我的计划如下所示。此更新是为了澄清和道歉深夜的问题。编译错误是由于文件中其他地方的问题造成的 澄清:一个简单的Java枚举,如下所示: public enum ServiceSource { NONE, URL, FILE; } public boolean isURL(){ return (URL == this); } public boolean isURL(){ return (URL == this); }

G'day,勘误表。。。我的计划如下所示。此更新是为了澄清和道歉深夜的问题。编译错误是由于文件中其他地方的问题造成的

澄清:一个简单的Java枚举,如下所示:

public enum ServiceSource
{
    NONE,
    URL,
    FILE;

}
public boolean isURL(){
    return (URL == this);
}
  public boolean isURL(){
    return (URL == this);
  }
想检查一下,比如,isURL():

这项工作(并编译)。。。毫无疑问——正确答案是:dasblinkenlightElliott Frisch。非常感谢您抽出时间

另见:


由于这是一个实例方法,您需要检查
this
是否等于
URL
,如下所示:

public enum ServiceSource
{
    NONE,
    URL,
    FILE;

}
public boolean isURL(){
    return (URL == this);
}
  public boolean isURL(){
    return (URL == this);
  }

由于这是一个实例方法,您需要检查
this
是否等于
URL
,如下所示:

public enum ServiceSource
{
    NONE,
    URL,
    FILE;

}
public boolean isURL(){
    return (URL == this);
}
  public boolean isURL(){
    return (URL == this);
  }

如果我理解你的问题,枚举中正确的方法是使用
这样的

public enum ServiceSource
{
  NONE(   "no_value"  ),
  URL(    "url"       ),
  FILE(   "file"      );
  ServiceSource(String v) {
    text =v;
  }
  private String text;
  public boolean isURL() {
    return this == URL;
  }
}

如果我理解你的问题,枚举中正确的方法是像这样使用
this

public enum ServiceSource
{
  NONE(   "no_value"  ),
  URL(    "url"       ),
  FILE(   "file"      );
  ServiceSource(String v) {
    text =v;
  }
  private String text;
  public boolean isURL() {
    return this == URL;
  }
}

如果您想要具有多态性的方法,即对于
enum
类的不同实例(值)表现出不同的行为,我的首选是覆盖一个通用方法:

public enum ServiceSource {

    NONE("no_value"),
    URL("url"){

        @Override
        public boolean isURL() {
            return true;
        }

    },
    FILE("file");

    private final String val;

    private ServiceSource(String val) {
        this.val = val;
    }

    public boolean isURL() {
        return false;
    }
}
但是对于检查这是否是特定的
enum
值的方法,为每个常量添加
isXXX
方法似乎是非常浪费的。实际上,使用
enum
的真正原因是,您可以编写

if(thing == ServiceSource.URL) 

在代码的其他地方。

如果您想要具有多态性的方法,即对于
枚举
类的不同实例(值)表现出不同的行为,我的首选是覆盖一个通用方法:

public enum ServiceSource {

    NONE("no_value"),
    URL("url"){

        @Override
        public boolean isURL() {
            return true;
        }

    },
    FILE("file");

    private final String val;

    private ServiceSource(String val) {
        this.val = val;
    }

    public boolean isURL() {
        return false;
    }
}
但是对于检查这是否是特定的
enum
值的方法,为每个常量添加
isXXX
方法似乎是非常浪费的。实际上,使用
enum
的真正原因是,您可以编写

if(thing == ServiceSource.URL) 

在代码中的其他位置。

您可以在枚举上创建一个方法来检查自身的值,如下所示:

public enum ServiceSource
{
    NONE,
    URL,
    FILE;

}
public boolean isURL(){
    return (URL == this);
}
  public boolean isURL(){
    return (URL == this);
  }
但是很难看出这种方法的价值,因为每个对象都有一个内置的equals()方法来完成相同的任务

if (serviceSource.equals(ServiceSource.URL)) { ... }

这将是检查枚举变量(或与此相关的任何变量)赋值的更常见和更明显的方法。采用第一种方法需要在枚举上有一个新的isX()方法;每次添加枚举常量时,您可能都需要一个新的方法来伴随它。

您可以在枚举上创建一个方法来检查自身的值,如下所示:

public enum ServiceSource
{
    NONE,
    URL,
    FILE;

}
public boolean isURL(){
    return (URL == this);
}
  public boolean isURL(){
    return (URL == this);
  }
但是很难看出这种方法的价值,因为每个对象都有一个内置的equals()方法来完成相同的任务

if (serviceSource.equals(ServiceSource.URL)) { ... }

这将是检查枚举变量(或与此相关的任何变量)赋值的更常见和更明显的方法。采用第一种方法需要在枚举上有一个新的isX()方法;每次添加枚举常量时,您可能都希望有一个新方法伴随使用。

您得到的确切编译器错误是什么?请参阅以获得经常喜欢的答案。您得到的确切编译器错误是什么?请参阅以获得经常喜欢的答案。