如何获取Java中调用类的名称?

 

问题描述:

在这件事上,我需要一些帮助,

例:

public class A {
    private void foo() {
        //Who invoked me?
    }
}

public class B extends A {}

public class C extends A {}

public class D {
     C.foo();
}

基本上是这种情况。我的问题是方法如何foo()知道谁在调用它?

编辑:基本上我正在尝试做一个数据库层,并且在class A我将创建一种将生成SQL语句的方法。通过获取public调用的所有属性的值来动态生成此类语句class


 

第 1 个答案:

最简单的方法如下:

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

但实际上,除非出于某些日志记录目的,否则不需要这样做,因为这是一项相当昂贵的任务。这是什么,你认为这是解决方案?我们可能会提出更好的建议。

基本上,我正在尝试做一个数据库层,在类A中,我将创建一个将生成sql语句的方法,通过获取调用类的所有公共属性的值来动态生成此类语句。

然后,我强烈建议你寻找一个现有的ORM库,例如Hibernate,iBatis或任何JPA实现。


我有一个带有工具栏的Java项目,该工具栏上带有图标。这些图标存储在名为resources /的文件夹中,因此路径可能是“ resources / icon1.png”。该文件夹位于我的src目录中,因此在编译 ...