在Python中,你可以获得通过__file__
执行的文件的路径是否有java等价物?
还有一种方法可以获得与__name__
类似的当前包吗?
最后,什么是java内省的好资源?
答案 0 :(得分:9)
this.getClass()=当前班级
this.getClass()。getPackage()=当前包
Class.getName()=类名的字符串
Package.getName()=包名称的字符串
我相信你正在寻找Reflection API来获得内省的等价物(http://download.oracle.com/javase/tutorial/reflect/)。
答案 1 :(得分:4)
@ Christopher的回答解决了班级名称的问题。
AFAIK,标准的Java类库没有直接的方法来获取对象类的文件名。
如果使用适当的“-g”选项设置编译类,则可能间接获取类文件名,如下所示:
Throwable.getStackTrace()
获取异常的堆栈跟踪信息。StackTraceElement.getFilename()
获取源文件名。请注意,这可能很昂贵,并且无法保证将返回文件名,或者它将是您期望的文件名。
答案 2 :(得分:3)
您可以获取包含类文件的文件夹(不包括):
SomeClass.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm();
答案 3 :(得分:1)
您可以使用反射来导航堆栈跟踪:
new Throwable().getStackTrace()[1].getFileName()
new Throwable().getStackTrace()[1].getClassName()
new Throwable().getStackTrace()[1].getMethodName()
new Throwable().getStackTrace()[1].getLineNumber()