我一直使用以下模式来构造(SLF4J)记录器:
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
到目前为止,这种方法一直有效,但是我想知道static
上下文是否在某个时刻以及是否需要始终传递具体的类文字而不是仅使用非静态记录器(例如
private final Logger log = LoggerFactory.getLogger(getClass());
在此之前,基本上已经向LOG4J询问(并回答了)
记录器是否应为私有静态
和这里
记录器应该始终是最终状态还是静态状态?
我意识到final
基本上是强制性的,所以我想知道在非静态上下文中使用SLF4J的开销实际上有多高。
问:
使用是否有任何 重大的实际 开销
private final Logger log = LoggerFactory.getLogger(getClass());
过度
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
在 平均 (网络)应用中?(无需在此处“讨论”高端,繁重的Webapp)
请注意,我最终打算使用CDI更好的方法来获得SLF4J记录器,例如
@Inject private final Logger log;
如此处http://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjection所述,但我需要首先了解记录器缓存。
子问题:甚至可以使用?:
@Inject private static final Logger log;
(老实说,只是从CDI开始)
记录器应该始终是最终的和静态的吗? 我意识到基本上是必需的,所以我想知道在非静态上下文中使用SLF4J的开销实际上有多高。 问:
我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:
问题内容: 我有一群学生。首先,我想按标记对它们进行分组。然后,我想进一步将这些集合归为同名学生。 我收到一个错误消息, 非静态方法不能从静态上下文中引用。 是。我非常清楚,没有实例就无法引用非静态方法。但是,对于所有这些流操作,我对真正出了什么问题感到有些困惑。 而不是如何解决这个问题;我真的很想知道这是怎么回事。您的任何意见表示赞赏! 因为如果我写下面的分组是完全有效的; 这是我的Studen
我尝试使用网络豆IDE在java中创建一个简单的类。每当我试图执行这个命令时,它都会发出这样的警告。从静态上下文引用的非静态变量“。谁能告诉我为什么会发生这种情况以及如何解决它。提前感恩节。
问题内容: 在UNI atm上做Java课程,我遇到了骰子问题。 我有以下内容: 编译时,我得到:无法从静态上下文引用非静态变量n。我如何解决这个问题,同时让它从用户给定的值中随机化? 问题答案: 不是静态变量,因此您不能以静态方式()引用它。 由于它是类中的实例变量,并且您正在类中引用它,因此可以使用代替。
我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?