我是编程新手,所以让我们看看我是否可以解释得这么好。
我正在制作一个Java包。在其中一个类中,有一个创建文件的方法。我把它设置为“file.txt”的那个文件的名称,但我想改变它。
假设有一个用户正在处理一个新项目并且他导入了库包(我正在处理的那个)。我希望创建的文件采用用户正在处理的类的名称。例如,如果用户在名为Main的类中调用它,我希望该文件名为main.txt或Main.txt。
如果这个不够清楚请告诉我,我会尽力解释一下。
由于
编辑:我已经尝试了getClass()。getSimpleName()但它的工作方式与我想要的完全不同。该方法位于名为library
的库中,该类名为Main.class
,但正由导入库library
的用户使用,并且正在处理名为{{1}的类我希望文本文件被调用SuperMario.class
而不是SuperMario.txt
应用于我的方法,文件将被称为getClass().getSimpleName()
,因为这是该方法所在类的名称。不幸的是我不能让方法将名称作为参数传递。谁能想到解决这个问题的方法呢?
答案 0 :(得分:3)
在您的库中,使用stacktrace:
public class Called {
public static void calledMethod() {
System.out.println(Thread.currentThread().getStackTrace()[2].getClassName());
// stackTrace 0 is get stack trace.
// stack trace 1 is calledMethod
// stack trace 2 is the calling method aka main in
}
}
结果将是
eu.plop.test.TestClass
你必须在stacktrace之后搜索,看看你是否想要文件名,类名,方法名......然后一些字符串可以在未使用的情况下删除包。