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 代码中说明的所有三个选项:

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 回答