1. ホーム
  2. java

[解決済み] Javaクラスのインスタンス化および継承の禁止

2022-01-31 11:14:44

質問事項

単純なクラスをインスタンス化や継承ができないように修正するよう依頼されました。 インスタンス化されないためのabstractと、継承されないためのfinalの使い分けに戸惑いました。

このようなクラスはどのように書けばよいのでしょうか?

よろしくお願いします。

どのように解決するのですか?

クラスはfinalとabstractを両立させることはできません。コンストラクタを非表示にし、リフレクションで例外を発生させてインスタンス化を防ぐことができます。

それはこんな感じです。

final class MyClass {
    private MyClass() {
        throw new IllegalStateException("Cannot be instantiated"); //some exception
    }
}