2016-03-24 5 views
1

私はこの設定クラスを持っています。Intellijデバッガ:trueがfalseになって、何が起こっていますか?</p> <pre><code>public class ShiroConfiguration { private final boolean enabled = false; public boolean isEnabled() { return enabled; // **** } </code></pre> <p>もちろん、間違いはそれが偽しかし、何もすることはできませんので、私は、有効フラグ「最終」を作っていることである:

実行時に、私の設定が有効になっていない理由を突き止めようとしていました。そのため、デバッガ(IntelliJの)でコードを実行しました。デバッガはenabledが値 'true'を持っていることを示しましたが、このメソッドは確実に値 'false'を返していました。

デバッガでオブジェクトのバージョンが正しく表示されないのはなぜですか?

これはどういうことか分かりません。それはIntelliJのバグかJavaのデバッグインターフェースですか?

enter image description here

==============

ここ

は、私は()config.isEnabledを呼び出す行にブレークポイントでデバッガで見るものです

+0

1.いくつかのプログラムにはバグがあります。 2.すべてのデバッガはプログラムです。 – dasblinkenlight

+0

これは[JetBrains](https://youtrack.jetbrains.com/oauth?state=%2Fissues%2FIDEA)に直接報告するようなものです。 –

+0

ブレークポイントに到達したインスタンスがクラスであることをデバッガでチェックしましたか?可能なshiroはあなたの設定クラスを他のクラスにラップしています。これにより、あなたが上書きされます。 –

答えて

0

メソッドを呼び出す際に間違いがない、つまり別のクラスのメソッドと呼ばれる場合、これはデバッガのバグのようです。デバッガは、プログラム内のキーワードfinalを一時的に無視しているようです。しばらくの間finalキーワードを削除してみてください。

+0

はい、「final」キーワードを削除すると、返される値は「true」です。 IntelliJまたはJavaデバッグインタフェース(JDI)のバグかどうかは不思議です。 – user2800708

+0

@ user2800708だから、最終的なキーワードがなければ、結果はあなたが正しく予想しているものですか? –

+0

それは正しいです。 – user2800708

関連する問題

 関連する問題