2016-11-08 2 views
4

私は実際にコメントをどこに行かなければならないのか、どのようなキーワードを使って私が実際にオンラインの例を見つけるように見えるかを知りたがっています。クラスの不変量をJava文書化する方法は?

/** 
* @invariant invariant example 
*/ 
public class Example { 
} 
+3

普遍的な標準はありませんそれを行う方法。 –

答えて

4

数possibilitesが

@Contract注釈

いくつかの例

  • @Contractあります( "_、ヌル - >ヌル") - メソッドはnullを返します2番目の 引数がnullの場合

  • @Contract( "_、ヌル - >ヌル;!_、ヌル - >ヌル") - 2番目の引数がnullであり、そうでない場合は -nullでない場合 メソッドはnullを返します。

  • @Contract( "true - > fail") - 典型的なassertFalse()メソッド は、trueが渡された場合に例外をスローします。

詳細はhttps://www.jetbrains.com/help/idea/2016.2/contract-annotations.htmlを参照してください。

IntelliJ IDEAなしで使用できます。 IDEAはこれらの注釈をスマートにサポートしています。指定された不変条件が実際に満たされているかどうかを調べるメソッドコードです。

テキストによる説明

は、この方法では、すべてのケースをカバーしていません。フィールド間のより複雑な依存関係については、英単語を使用して不変式を記述する必要があります。例えば

、マップが以前にこのキーのマッピングを保持していた場合https://docs.oracle.com/javase/7/docs/api/java/util/Map.html#put(K,%20V)

は、古い値が指定した値に置き換えられます。

例外また

、例外が記述不変強制するために使用することができます。上記Map.put方法のために我々は(不変クラスを破る引数)無効な引数の例外

  • @throwsにUnsupportedOperationException putオペレーション がこのマップでサポートされない場合
    • @throwsを以下していますClassCastException - 指定されたキーまたは値のクラスが の場合、このマップに格納できない場合
    • @throws NullPointerException - 指定されたキーまたは値がnullの場合 と、このマップがnullキーを許可したり、指定したキー または値のいくつかのプロパティは、このマップに格納できない場合
    • @throwsのはIllegalArgumentException値はありません
関連する問題