web-dev-qa-db-ja.com

Javaには.NETのNotImplementedExceptionのようなものがありますか?

Javaには.NETのNotImplementedExceptionのようなものがありますか?

514

Commons Lang にあります。あるいは、 UnsupportedOperationException をスローすることもできます。

491
Ravi Wallau

私はあなたが探しているのは Java.lang.UnsupportedOperationException だと思います。

275
Chris Dail

あなたはそれを自分で行うことができます(それは私がしたことです) - 例外処理に煩わされないようにするためには、単にRuntimeExceptionを拡張するだけで、クラスは次のようになります。

public class NotImplementedException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public NotImplementedException(){}
}

メッセージを受け取るように拡張することもできます - しかし、私がしているように(つまり、実装するものがまだあることを思い出させるために)メソッドを使用すれば、通常追加のメッセージは必要ありません。

私は、私がシステムの開発過程にいる間、私はこのメソッドを使うだけで、どのメソッドがまだ正しく実装されていないかを見失わないようにすることを勇気づけます。

53
Ready4Android

存在しませんし、おそらく存在しません。有効な使用法はほとんどないからです。私はそれを使う前に二度考えます。また、あなた自身を創造することは実に簡単です。

なぜ.NETでさえ行われるのかについては この議論 を参照してください。

私はUnsupportedOperationExceptionが近づいていると思いますが、それは操作が単に実装されていない、しかしサポートされていないことさえ言っていません。それは有効な実装が不可能であることを意味するかもしれません。操作がサポートされないのはなぜですか?あってもいいですか?インターフェースの分離やLiskovの置換の問題があるかもしれません。

それが進行中であれば、私はToBeImplementedExceptionに行きますが、具体的なメソッドを定義してからそれを長い間そのままにしておくと、そのような例外が必要になるでしょう。

8
Dormouse

前述したように、JDKは密接には一致していません。しかし、私のチームは時折そのような例外のためにも用途があります。他の回答で示唆されているようにUnsupportedOperationExceptionを使用することもできましたが、ベースライブラリには、推奨されないコンストラクタを持つカスタム例外クラスを使用することをお勧めします。

public class NotYetImplementedException extends RuntimeException
{
    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException()
    {
    }

    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException(String message)
    {
        super(message);
    }
}

この方法には次のような利点があります。

  1. 読者がNotYetImplementedExceptionを見たとき、彼らは実装が計画され忘れられているかまだ進行中であることを知っていますが、UnsupportedOperationExceptionは( collection contract に沿って)実装する。そのため、クラス名に「まだ」という言葉があります。また、IDEを使用すると、通話サイトを簡単に一覧表示できます。
  2. 各通話サイトでの廃止予定の警告により、IDEおよび静的コード分析ツールにより、まだ実装が必要な箇所がわかります。 (この廃止予定の使用は一部の人には間違っていると感じるかもしれませんが、実際には 廃止予定は削除の発表に限定されていません
  3. コンストラクタは非推奨です。クラスではありません。この方法では、import行ではなく、実装が必要なメソッド内でのみ非推奨警告が表示されます(JDK 9 これを修正 )。
5
Jens Bannmann