相关疑难解决方法(0)

比较Java枚举成员:==或equals()?

我知道Java枚举被编译为具有私有构造函数和一堆公共静态成员的类.当比较给定枚举的两个成员时,我总是使用.equals(),例如

public useEnums(SomeEnum a)
{
    if(a.equals(SomeEnum.SOME_ENUM_VALUE))
    {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我刚刚遇到一些使用equals运算符==而不是.equals()的代码:

public useEnums2(SomeEnum a)
{
    if(a == SomeEnum.SOME_ENUM_VALUE)
    {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个运营商?

java enums

1645
推荐指数
11
解决办法
62万
查看次数

用Enum实现Singleton(用Java)

我已经读过可以Singleton使用以下方法在Java中实现Enum:

public enum MySingleton {
     INSTANCE;   
}
Run Code Online (Sandbox Code Playgroud)

但是,上面的工作如何?具体而言,Object必须实例化.在这里,如何MySingleton被实例化?谁在做什么new MySingleton()

java singleton enums design-patterns

165
推荐指数
6
解决办法
11万
查看次数

了解Java中的枚举

什么是java枚举?他们是如何工作的?我在哪里可以使用它们以及如何?
我可以不在应用程序中使用枚举,或者它们是如此强大以至于使用它们比忽略它们更好吗?

java enums

17
推荐指数
2
解决办法
2万
查看次数

Java枚举实例的生命周期

据我所知,每个枚举类型的预定义常量只有一个实例.那是对的吗?现在,假设有一个名为valueenum 的实例变量,假设ONE是一个预定义的常量.如果value为(的)实例修改了,ONE则会影响所有引用的变量ONE.但是什么value时候垃圾收集器摆脱枚举的所有实例的价值呢?他们甚至被扔掉了吗?

下面是一个简单的例子,其中有两个变量AB,既指ONE.在第一次使用value之前,该值被否定B.如果垃圾收集器已经摆脱了该ONE行之前的实例Number B = Number.ONE;,那么value我认为该值将被"重置"回到1.它是否正确?

枚举:

public enum Number
{
    ONE(1), TWO(2), THREE(3); 

    int value;

    Number(int value) { this.value = value; }

    void negate() { value = -value; }

    @Override
    public String toString() { return "value: " + value; }
}
Run Code Online (Sandbox Code Playgroud)

主要方法:

public static void main(String[] args)
{
    Number A …
Run Code Online (Sandbox Code Playgroud)

java enums

5
推荐指数
1
解决办法
677
查看次数

标签 统计

enums ×4

java ×4

design-patterns ×1

singleton ×1