1

子クラスでオーバーライドする必要があるメソッドを持つ 2 つの基本クラスがあるとします。

public abstract class Base1 {
    protected abstract void method();
}

public abstract class Base2 {
    protected void method() {
        throw new UnsupportedOperationException();
    }
}

使用するベストプラクティスは何ですか: 抽象メソッドまたはデフォルトでサポートされていない例外を持つメソッド?

4

4 に答える 4

2

両方を代替アプローチと見なすべきではありません。not-supportedと の間には違いがありnot-implementedます。理想的には、コードでもこれを維持する必要があります。

abstract有効でデフォルトの実装が不可能な場合は、メソッドを使用してください。

UnsupportedOperationException操作が許可されていない/サポートされていないメソッドで実装を使用してください。たとえば、削除メソッドは、変更不可能なコレクション (セット/リスト) などでこの例外をスローする必要がありますCollections。クラスを参照してください。(ここで、可能なデフォルトの実装は呼び出し元に例外をスローすることに注意してください)

于 2013-10-10T09:16:14.970 に答える
0

あなたはすでに質問に答えました:「上書きする必要があります」-提供されたサンプルのどれが上書きを強制しますか?abstract

さらに、コンパイル時の問題を示しています。

使用しUnsupportedOperationExceptionても、プログラムを実行するまで問題は発生しません。これは、高品質のソフトウェアについて話すときは遅すぎます。そして、すでに述べたように、それは別の目的を果たします。

于 2013-10-10T09:56:18.823 に答える