2013-07-29 22 views
10

アサルトステートメントで結果が返されないのはなぜですか? 最初のassert文は失敗するはずですが、Eclipseに何も表示されていないと思います。Javaアサーションエラーでエラーが発生しない

私はこのプログラムを実行するためにEclipseを使用しています。

package java.first; 

public class test { 
    public static void main(String[] args) throws Exception { 
    String s = "test1"; 
    assert (s == "test"); 
    s = "test"; 
    assert (s == "test"); 
    } 
} 

答えて

7

あなたは(-enableassertionsの略)-ea引数でアサーションを有効にする必要があります。 Eclipseで

  • "別のユーザーとして実行"、その後、プロジェクトにを右クリックし、 "実行構成..."
  • "引数" タブ
  • を選択
  • "VM引数"フィールドに-eaを入れます。
  • AssertionErrorを起こす必要があります実行している、

を "適用" を選択します。

18

JVMオプションで-ea(アサーションを有効にする)を設定する必要があります。


非血縁ができますが、ほとんど常にstring1.equals(string2)ではなく==たい。

+0

から「借りた」回答:この他のオブジェクトの同じ参照に、このオブジェクトのポイントへの参照を?これは2人の人がメモリの同じ塊に割り当てられているかどうかです。それはあなたのアプリケーション(シングルトン)全体の中でそのようなオブジェクトが1つしか存在しない場合にのみ真です。 つまり、オブジェクトのインスタンスは、それ自身に対して '=='のみです。 同じ値を保持する別のインスタンスと比較しているので、上記のように 'equals'メソッドを使用する必要があります。 – VallaDanger

+0

'(s ==" test ")と言ったときに、実際に' test'という値を持つStringの新しいインスタンスを作成しているので、その新しいインスタンスが '=='から 's'になっているかどうかを尋ねることは絶対に真ではありません'String.intern()'メソッドを使用しない限り、同じ値を持つすべての文字列が同じメモリを共有することはありません。 実際にオブジェクトの平等について知る必要があります。効果的なJava(第2版、第3章、アイテム8)にチャンスを与えることをお勧めします。 – VallaDanger

1

-ea引数を使用して有効にする必要があります。

4

実行時にアサーションチェックをオンにする必要があります。 Java用のOracleのドキュメントの状態:

は -enableassertions、または-ea、スイッチを使用して、さまざまな粒度でアサーションを有効にするには。さまざまな粒度でアサーションを無効にするには、-disableassertionsまたは-daスイッチを使用します。あなたはEclipseがであなたのプログラムを実行するパラメータを変更する必要がありますEclipseの内部で実行するプログラムの実行時オプションを変更するにはhttp://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#enable-disable

でOracleのWebサイト上の

詳しくご説明しています。これを行う方法のEclipseのバージョンによって異なりますが、ここでは、Eclipseヨーロッパでどのように動作するかだが...

  • ファイル名を指定して実行]ダイアログを(これは、「ファイル名を指定して実行」メニューの下のオプションでなければなりません)を開きます。
  • 「(x)= Arguments」タブをクリックします。
  • 「VM引数」のフィールドに、アサートを有効にする-eaを入力します。
  • [適用]ボタンをクリックします。

それは、次の質問に答えるようにあなたは、 `== '演算子を理解することができる、ということについては詳しく説明しhttp://www.coderanch.com/t/416987/vc/enable-Assertions-eclipse

関連する問題