私はJPanelを継承するクラスを持っています。そのコンストラクタでは、私はthis
を他のメソッドに渡しています。主にjpanelオブジェクトをjpanel内のコンテナ/コントロール(ほかのオブジェクト)にリスナーとして追加します。 Netbeansはこれらの呼び出しに対してleaking this in constructor
という警告を表示しているので、コンストラクタから呼び出される他のメソッドにそれらを入れました。症状を取り除くこれをコンストラクタにリークする - リスナーと "this"が必要なその他のメソッドを適切に追加する場所
class Foo ... {
public Foo() {
initComponents();
initListeners();
}
protected void initListeners() {
tabX.addChangeListener(this);
}
:後
class Foo ... {
public Foo() {
initComponents();
tabX.addChangeListener(this); // <- netbeans complains here
}
:前
。しかし、私はnetbeansが警告を表示する理由を修正するのは間違いです。
JPanel派生クラスでこの種の初期化を実行する適切な場所はどこですか?
あなたはメソッドのシグネチャを投稿することができ、あなたが – Woot4Moo
、これはあなたがhttp://stackoverflow.com/questions/3921616/java-leaking-this-in-constructor – Chikei
[Javaのに役立つかもしれない「修正」 - 漏れましたこれはコンストラクタ](http://stackoverflow.com/q/3921616/1048330) – tenorsax