有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    您可以获取包含类文件的文件夹(不包括包):

    SomeClass.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm();
    
  2. # 2 楼答案

    这个。getClass()=当前类
    这getClass()。getPackage()=当前包
    班getName()=类名的字符串
    包裹getName()=包名称的字符串

    我相信您正在寻找反射API,以获得与内省等效的功能(http://download.oracle.com/javase/tutorial/reflect/)

  3. # 3 楼答案

    您可以使用反射来导航堆栈跟踪:

    new Throwable().getStackTrace()[1].getFileName()
    new Throwable().getStackTrace()[1].getClassName()
    new Throwable().getStackTrace()[1].getMethodName()
    new Throwable().getStackTrace()[1].getLineNumber()
    
  4. # 4 楼答案

    @Christopher的回答解决了类名的问题

    顺便说一句,标准Java类库没有提供获取对象类的文件名的直接方法

    如果类是使用适当的“-g”选项设置编译的,则可以潜在地间接获取类文件名,如下所示:

    • 在其中一个类方法中创建异常对象
    • 使用Throwable.getStackTrace()获取异常的堆栈跟踪信息
    • 获取当前方法的stacktrace元素,并使用StackTraceElement.getFilename()获取源文件名

    注意,这可能会很昂贵,并且不能保证文件名会被返回,或者它将是您期望的