2012-03-28 6 views
1

次のような例では、使用されていないため、dataに警告が表示されます。なぜこれが警告するべきなのか、誰かが説明できますか?Eclipseは、抽象クラスで「変数は使用されていません」と警告しますか?

public abstract class Worker { 

    private Object data; 

    public Worker(Object data) { 
     this.data = data; 
    } 

    public abstract Result run(); 

} 

言うまでもなく、この抽象クラスではなく、データオブジェクトが使用されている点です。このエラーをなくすために、私は何をしなければならないのですか?すなわち、それは日食の設定か、私はただ何か間違っていますか?

答えて

10

もちろん、この抽象クラスではなく、データオブジェクトが使用されています。

どのようにですか?それは私用です。リフレクションを使用していない限り、サブクラスはそれを見ることができません。 、保護されたgetData()方法を提供したり、より良い(IMO) -

あなたそれがprotectedので、サブクラスがそれを見ることができることを作ることができます。

+0

なぜ、保護された 'getData()'メソッドが良いとおもうのだろうか? – Jacob

+0

@Jacob:私はフィールドを実装の詳細として扱いますが、本当に例外的な場合以外は非公開で公開すべきではありません。 –

1

答えを見つけました!変数はprivateと宣言されているため、このクラスの子孫で使用することはできません。変数を宣言する必要があります。

3

変数はクラスに対してプライベートなので、実際にはどのサブタイプでもアクセスできません。コンストラクターでのみ割り当てられるので、Eclipseは使用されていないことを警告します。

変数がサブタイプで使用されている場合は、可視性の拡張を開始するか、ゲッター/セッターを追加してください。型を使用しない場合は、コンストラクタで渡すべきではありません。

関連する問題