La *_*bla 72 java eclipse classname package
我正在研究一个项目,一个要求是如果main方法的第二个参数以'/'开头(对于linux)它应该将它视为绝对路径(不是问题),但如果它不是以'/',它应该获取类的当前工作路径并将其附加到给定的参数.
我可以通过多种方式获取类名/,/和System.getProperty("java.class.path")等..
问题是,这只给了我存储包的目录 - 即如果我有一个类存储在".../project/this/is/package/name"中,它只会给我"/ project/"并忽略实际.class文件所在的包名称.
有什么建议?
编辑:这是解释,取自练习说明
sourcedir可以是绝对的(以"/"开头)或相对于我们运行程序的位置
sourcedir是main方法的给定参数.我怎么能找到那条路?
The*_*ail 149
使用this.getClass().getCanonicalName()来获得完整的类名.
请注意,包/类名("abC")与.class文件(a/b/C.class)的路径不同,并且使用包名/类名来派生路径通常是不好的做法.类文件/包的集合可以在多个不同的类路径中,这些路径可以是目录或jar文件.
Jon*_*and 25
有一个类Class可以做到这一点:
Class c = Class.forName("MyClass"); // if you want to specify a class
Class c = this.getClass(); // if you want to use the current class
System.out.println("Package: "+c.getPackage()+"\nClass: "+c.getSimpleName()+"\nFull Identifier: "+c.getName());
Run Code Online (Sandbox Code Playgroud)
如果在包中c表示类,则上面的代码将打印:MyClassmypackage
包:mypackage
类:MyClass
完整标识符:mypackage.MyClass
您可以获取此信息并根据需要进行修改,或者查看API以获取更多信息.
Boz*_*zho 11
完全限定名称的运行方式如下:
String fqn = YourClass.class.getName();
Run Code Online (Sandbox Code Playgroud)
但是您需要读取类路径资源.所以使用
InputStream in = YourClass.getResourceAsStream("resource.txt");
Run Code Online (Sandbox Code Playgroud)
usethis.getClass().getName()来获取packageName.className和 usethis.getClass().getSimpleName()只获取类名
| 归档时间: |
|
| 查看次数: |
119899 次 |
| 最近记录: |