美文网首页
java.lang.Class.getEnclosingClas

java.lang.Class.getEnclosingClas

作者: 憨人Zoe | 来源:发表于2018-09-11 11:00 被阅读0次

    java.lang.Class.getEnclosingClass() 方法返回直接封闭类的底层类。如果这个类是一个顶级类此方法返回null。

    项目中生成日志或者调用消息时,通常希望包含当前类的类名,如:

    log.error("Exception happened in {}", getClass().getName());
    

    但是对于静态方法不起作用,因为调用getClass() 时是调用的this.getClass(),而静态方法没有this。所以此时可以用 java.lang.Class.getEnclosingClass() 方法,如下:

    package com.yzy.test;
    
    public class Main1 {
        public static void main(String[] args) {
            System.out.println(new Object(){}.getClass().getEnclosingClass().getName());
        }
    }
    
    输出:com.yzy.test.Main1
    

    其中,new Object(){} 会建立一个Object的匿名子类的匿名对象,getEnclosingClass 则得到其外围类,也就是包含这个静态方法的类。

    相关文章

      网友评论

          本文标题:java.lang.Class.getEnclosingClas

          本文链接:https://www.haomeiwen.com/subject/mbwygftx.html