簡體   English   中英

沒有實例的Java枚舉

[英]Java enum with no instances

在RXJava [1]中有一個枚舉[2]定義為

public enum JavaFxObservable {
    ; // no instances


    public static void staticMethod() {
        // ...
    }
}

這種技術使用沒有實例的枚舉的目的是什么? 為什么不使用標准類?


這種技術使用沒有實例的枚舉的目的是什么?

您以最簡單的方式定義這是一個沒有實例的類,即它是實用類。

為什么不使用標准類?

enum是一個類。 它也是私有構造函數的最終版本。 你可以寫

public final class JavaFxObservable {
    private JavaFxObservable() {
        throw new Error("Cannot create an instance of JavaFxObservable");
    }
}

但這更冗長,更容易出錯。 例如,我在實際代碼中看到了這一點

public final class Util {
    private Util() {
    }

    static void someMethod() { }

    static class DoesSomething {
         void method() {
             // WAT!? we can still create this utility class
             // when we wrote more code, but it's not as good.
             new Util().someMethod(); 
         }
    }
}

評論是我的。 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM