在Java静态方法声明中使用当前类
发布时间:2020-12-14 05:14:12 所属栏目:Java 来源:网络整理
导读:我的 Java生锈了,所以请忍受我.在C我可以做: int someFunc(void){ printf("I'm in %sn",__func__);} 在Java中,我可以按照当前正在定义的类型的名称或类进行词法.例如,如果我有: import org.apache.log4j.Logger;class myClass { private static final Log
我的
Java生锈了,所以请忍受我.在C我可以做:
int someFunc(void) { printf("I'm in %sn",__func__); } 在Java中,我可以按照当前正在定义的类型的名称或类进行词法.例如,如果我有: import org.apache.log4j.Logger; class myClass { private static final Logger logger = Logger.getLogger(myClass.class); ... } 在getLogger()参数中重复“myClass”似乎是错误的.我想要“getLogger(__ CLASS__)”或“getLogger(this.class)”或某事. (我知道这两个都是愚蠢的,但他们应该指向我正在寻找的东西.)Java编译器在处理源代码时真的不知道什么类别? 解决方法
不幸的是,如果你处于一个静态的上下文(就像你在这里),没有更简单的方法.如果记录器是一个实例变量,可以使用getClass(),但是您将不得不担心子类.
对于这种特殊情况,替代方案是使用log5j. log5j是围绕log4j的包装器,其方便方法如getLogger(),通过走栈来推断正确的类.所以你的代码将成为: import com.spinn3r.log5j.Logger; class myClass { private static final Logger logger = Logger.getLogger(); ... } 并且您可以将相同的声明复制并粘贴到所有类中,没有任何问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |