The Answer
用TheClassName.class
而不是getClass()
.
申报伐木工人
由于这对于一个特定的用例(提供一种插入日志(log)声明的简单方法)非常受关注,我想我应该补充一下我的 idea .日志(log)框架通常期望日志(log)被约束到特定的上下文中,比如一个完全限定的类名.因此,如果不进行修改,它们是不可复制的.其他答案中提供了粘贴安全日志(log)声明的建议,但它们也有缺点,如字节码inflating 或添加运行时自省.我不推荐这些.复制粘贴是一个百分百的问题,所以编辑器解决方案是最合适的.
在IntelliJ中,我建议添加一个实时模板:
- 使用"log"作为缩写
- 使用
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger($CLASS$.class);
作为模板文本.
- 单击编辑变量,然后使用表达式
className()
添加类
- 选中复选框以重新格式化和缩短FQ名称.
- 将上下文更改为Java:declaration.
现在如果你输入log<tab>
,它会自动扩展到
private static final Logger logger = LoggerFactory.getLogger(ClassName.class);
并为您自动重新格式化和优化导入.