java - Java 8中以静态方式获取类名

标签 java java-8 static classname

这是 more general and similar question/answers 的后续内容

Java 8中,我可以使用 new Exception 获取调用该方法的类名

String className = new Exception().getStackTrace()[1].getClassName();

但是我可以以静态方式获取类名吗?

编辑

如果我在不同类的方法中并且想知道调用我的方法的类

最佳答案

从另一个类以静态方式获取调用类的类名的示例:

public class Main {
    public static void main(String[] args) {
        example();
    }

    public static void example() {
        B b = new B();
        b.methodB();
    }
}

class B {
    public void methodB(){
        System.out.println("I am methodB");
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTrace[2];
        System.out.println("I was called by a method named: " + element.getMethodName());
        System.out.println("That method is in class: " + element.getClassName());
    }
}

以静态方式获取完全限定类名的示例:

MyClass.class.getName();

关于java - Java 8中以静态方式获取类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58224688/

相关文章:

Java 8 流 - 修改组中的所有元素

java - 使用替代品在 centos 上安装 java

java - Java 8 出现奇怪的 Android Studio 错误

java - 线程 : Lazy Initialization vs Static Lazy Initialization

java - Java 日历操作的结果不一致

java - 当我终止我的应用程序或重新启动设备时, boolean 值不会保留在正确的输入上

c++ - 为什么这里需要静态

django - 如何在 Django 中设置静态文件

java - 用于匹配不包含符号的 URL 路径段的正则表达式

java - 使用哪种数据结构来存储条目及其时间戳(按排序顺序)