これが他の場所で取り上げられている場合は事前にお詫びしますが、あいまいで一般的な用語が含まれているため、無関係なヒットが多く、役に立たなかったことがわかりました. 私のプロジェクトはかなり大きいので、M(N)WE を提供するのは合理的ではないと思います。代わりに、他に何を確認するかについてのアイデアを探しています。コードブロックは次のとおりです。
try {
myClassObject = new MyClass(string1, string2, string3, otherClassObject); (1)
System.out.println("Test"); (2)
} catch (Exception e){
System.out.println(e.getMessage() + " " + e.getStackTrace()); (3)
}
私のコンストラクター(1)は決して呼び出されません。ただし、(2) も (3) も呼び出されません (つまり、テスト文字列は出力されず、例外も出力されません)。私のtry-catchブロックの理解から、これは不可能です。
私は Eclipse のデバッグ モードを使用しており、その行をステップ オーバーできます。4 つのオブジェクトはすべて定義されており、問題なく印刷できます (したがって、アクセスの問題ではありません)。4 つのオブジェクトはすべて、デバッグ モードで表示すると期待値を示します。ただし、デバッグ モードは (1) からコードの残りの部分にスキップし、(2) または (3) には決してヒットしません。MyClass のコンストラクターに配置されたデバッグ ポイントに到達することはありません。
4 パラメーター コンストラクターの代わりに MyClass の既定のコンストラクターを呼び出すことができ、それは必要に応じて動作します。次に、(2) の後に 4 つのパラメーター コンストラクターの内容をコピー アンド ペーストし、4 つのパラメーターすべてを適切に設定すると、必要に応じてオブジェクトが作成されます。明らかにこれは実行可能な回避策ですが、4 パラメーター コンストラクターが失敗する理由が見つかりません。
要するに、これがどのように可能になるのか、ましてやそれを止める方法がわかりません。
編集: コードでクリーン -> ビルド -> デバッグを数回実行したので、.class の問題ではないと確信しています。念のため、.bin を削除して更新しましたが、効果はありませんでした。