加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在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();
    ...
}

并且您可以将相同的声明复制并粘贴到所有类中,没有任何问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读