0

私のプロジェクトでは Java ロギング API を使用しています。クラス A のコンストラクターのようにロガーを使用しています。たとえば、次のようになります。

public A(Context context) { 
  log_ = (Logger) context.getAttribute(LOGGER);
}

コンストラクターを持たないクラスに実装する必要があります...次のようにそのクラスのオブジェクトを作成しようとしました:

Class B { 
  B b; 
}

次のようなロガーを使用しようとしました:

log_ = (Logger) b.getAttribute(LOGGER);

<identifier expected>しかし、この行でエラーが発生し続けますか? ここでの障害は何ですか?前もって感謝します。

4

1 に答える 1

1

クラス定義に任意のステートメントを直接入れることはできません (実際には定義です)。メンバーフィールドを初期化できます

  1. コンストラクター (すべてのクラスには少なくともコンストラクターがあり、明示的にコーディングしない場合、コンパイラーは引数を取らないデフォルトのコンストラクターを追加します)
  2. 定義時に直接
  3. のような方法で怠惰にgetLogger()

(有効な) Java コードに示されている 3 つのオプションすべて:

class B {

  Context ctx = Context.getDefault();
  Logger log = ctx.getLogger();

  B(Context ctx) {
    log = ctx.getLogger();
  }

  Logger logger() {
    return ctx.getLogger();
  }
}
于 2013-03-28T10:39:43.660 に答える