0

顧客を保存しようとするクラスの概要があります。今、私はその Customer を別のクラスで使用したいと考えています。今は Public Static 値を使っていますが、静的変数を使うのはよくないと先生に言われました。これを解決できますか

public class OverView {
  public static Customer CurrentCustomer;

  CurrentCustomer = new Customer("Tom",23);
}

public class removeCustomer{

  Customer removeCustomer = OverView.CurrentCustomer;
}
4

3 に答える 3

1

あなたの先生は正しいです、静的変数と直接やり取りしないでください、ゲッター/セッターメソッドを実装してください

詳細については、 http://en.wikipedia.org/wiki/Mutator_methodを参照してください。

于 2012-04-13T15:54:16.957 に答える
0

さらに良いことに、あなたの例では、 Customer のインスタンスにまったく触れる必要はありません。「削除」機能は、Customer クラスのメンバー メソッドである必要があります。currentCustomer を静的にする必要があるかどうかさえわかりませんが、静的に保ちました。

public class Customer {

    //Customer constructor, etc.

    * * * 

    public void remove() {
        //remove the customer, whatever that entails
    }

}

public class OverView {

    private static Customer currentCustomer;

    public static void someMethod() {
        currentCustomer = new Customer("Tom",23);

        * * *

        //all done with this customer
        currentCustomer.remove();

        //but notice that the currentCustomer object still exists
    }
}
于 2012-04-13T16:13:53.377 に答える
0

非静的メンバーにアクセスするには、Overview のインスタンスが必要です。試す:

public class OverView {
  public Customer CurrentCustomer = new Customer("Tom",23);
}

Public class removeCustomer{

  OverView ov = new OverView();
  Customer removeCustomer = ov.CurrentCustomer;
}

また、CurrentCustomer をパブリックとして宣言せず、それにアクセスするためのパブリック get/set メソッドを実装することもお勧めします。

于 2012-04-13T15:53:55.313 に答える