我有一个类,它必须有一些静电方法.在这些静电方法中,我需要调用方法getClass()来进行以下调用:

public static void startMusic() {
  URL songPath = getClass().getClassLoader().getResource("background.midi");
}

然而Eclipse告诉我:

Cannot make a static reference to the non-static method getClass() 
from the type Object

修复此编译时错误的适当方法是什么?

推荐答案

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);

并为您自动重新格式化和优化导入.

Java相关问答推荐

内容处置 destruct 了PSP请求

一般类型和kotlin阴影Java函数的问题

无法从TemporalAccessor获取Instant:{},ISO解析为2024-04- 25 T14:32:42类型为java.time. form.Parsed

Java:根据4象限中添加的行数均匀分布行的公式

如何使用Java API在Oracle ODI中运行模拟?

在Java中测试DAO方法:假实现与内存数据库

SQlite for Android无法使用json_group_array/json_object

Java函数式编程中的双值单值映射

如何在Application.yaml中连接字符串?

A.ForEach与For(类型a:集合)

try 使用预准备语句占位符获取信息时出现Try-With-Resources错误

插入中的JOOQ序列,设置为VS值

当我在Java中有一个Synchronized块来递增int时,必须声明一个变量Volatile吗?

协同 routine 似乎并不比JVM线程占用更少的资源

如何通过用户ID向用户发送私信

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

如何设置默认序列生成器分配大小

双对象供应商

带有提取器的JavaFXObservableList会根据侦听器的存在而改变行为

如何在Java中正确实现填字游戏求解器