Javaには.NETのNotImplementedException
のようなものがありますか?
Commons Lang にあります。あるいは、 UnsupportedOperationException
をスローすることもできます。
私はあなたが探しているのは Java.lang.UnsupportedOperationException
だと思います。
あなたはそれを自分で行うことができます(それは私がしたことです) - 例外処理に煩わされないようにするためには、単にRuntimeExceptionを拡張するだけで、クラスは次のようになります。
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
メッセージを受け取るように拡張することもできます - しかし、私がしているように(つまり、実装するものがまだあることを思い出させるために)メソッドを使用すれば、通常追加のメッセージは必要ありません。
私は、私がシステムの開発過程にいる間、私はこのメソッドを使うだけで、どのメソッドがまだ正しく実装されていないかを見失わないようにすることを勇気づけます。
存在しませんし、おそらく存在しません。有効な使用法はほとんどないからです。私はそれを使う前に二度考えます。また、あなた自身を創造することは実に簡単です。
なぜ.NETでさえ行われるのかについては この議論 を参照してください。
私はUnsupportedOperationException
が近づいていると思いますが、それは操作が単に実装されていない、しかしサポートされていないことさえ言っていません。それは有効な実装が不可能であることを意味するかもしれません。操作がサポートされないのはなぜですか?あってもいいですか?インターフェースの分離やLiskovの置換の問題があるかもしれません。
それが進行中であれば、私はToBeImplementedException
に行きますが、具体的なメソッドを定義してからそれを長い間そのままにしておくと、そのような例外が必要になるでしょう。
前述したように、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);
}
}
この方法には次のような利点があります。
NotYetImplementedException
を見たとき、彼らは実装が計画され忘れられているかまだ進行中であることを知っていますが、UnsupportedOperationException
は( collection contract に沿って)実装する。そのため、クラス名に「まだ」という言葉があります。また、IDEを使用すると、通話サイトを簡単に一覧表示できます。import
行ではなく、実装が必要なメソッド内でのみ非推奨警告が表示されます(JDK 9 これを修正 )。