当前位置: 首页 > 面试题库 >

如何在Java中获取当前的类名,包括包名?

干照
2023-03-14
问题内容

我正在研究一个项目,一个要求是,如果main方法的第二个参数以“ /
开头(对于Linux),则应将其视为绝对路径(不是问题),但如果它不是以“”开头/”,则它应获取该类的 当前工作路径 ,并将其附加给定的参数。

我可以通过几种方式获取类名:System.getProperty("java.class.path")new File(".")getCanonicalPath(),等等。

问题是,这只会给我提供存储包的目录-即,如果我有一个html" target="_blank">存储在“ .../project/this/is/package/name”中的类,它将只给我“
/project/”,而忽略了实际.class files存在的包名称。

有什么建议?

编辑:这是从练习说明中得到的解释

sourcedir可以是绝对的(以“ /”开头),也可以是相对于我们从中运行程序的位置

sourcedir是main方法的给定参数。我如何找到那条路?


问题答案:

使用this.getClass().getCanonicalName()来获得完整的类名。

请注意,程序包/类名(“ abC”)与.class文件(a / b /
C.class)的路径不同,并且使用程序包名/类名派生路径通常是不好的做法。类文件/软件包的集合可以位于多个不同的类路径中,这些路径可以是目录或jar文件。



 类似资料:
  • 问题内容: 有没有办法在运行时获取当前包的名称? …且结果应为“主要” 现在我正在使用常量,例如: 但我很好奇您能否避免这种情况 问题答案: 没有提供所需功能的运行时或反射方法或函数。 我能找到的最接近的东西是: 这将输出: 您还可以读取文件的第一行并删除“ package”子字符串。(不确定这是最好的主意)

  • 问题内容: 我要做的就是获取当前的类名,并且java在类名的末尾附加了一个无用的废话 $ 1 。如何摆脱它,只返回实际的类名? 问题答案: “ $ 1”不是“无用的废话”。如果您的班级是匿名的,则会附加一个数字。 如果您不想要类本身,而是想要其声明类,则可以使用。例如: 您可以使用一些静态实用程序方法来移动它。 但是请注意,这不是当前的类名。匿名类与其封闭类是不同的类。内部类的情况与此类似。

  • 问题内容: 我需要自己编写一些util类,并且需要android应用的程序包名称。虽然我发现仅可在Activity中使用的packageManager等具有上下文。我只想在我的班级中获取包名,该包名将在android应用程序中使用。那我该怎么做呢?谢谢! 问题答案: 用途: 或者 您还可以创建一个函数:

  • 我用LocalDateTime.now()获得Java8中的LocalDateTime。但是有时这个now()函数以没有秒的格式返回时间给我。我以为是因为秒是零,但我需要秒。 PD:我有一个调度程序,它每30秒运行一次“LocalDateTime.Now()”。这是它在控制台中显示的内容。

  • 问题内容: 有没有办法在Django模板中获取当前页面的URL及其所有参数? 例如,一个模板标签将显示完整的网址,例如 问题答案: 编写自定义上下文处理器。例如 在设置变量中添加该函数的路径,然后在模板中使用它,如下所示: 如果要在每个请求中都有完整的对象,则可以使用内置的上下文处理器,然后在模板中使用。