gpt4 book ai didi

java - 如何通过 Package.getPackage(...) 访问包?

转载 作者:行者123 更新时间:2023-12-01 14:21:30 30 4
gpt4 key购买 nike

在我当前的项目中,我想将一些配置数据存储在包注释中,并由一些 CDI 生成器访问它。如果在当前包中找不到该注释,生产者将在包层次结构中向上搜索它。

到目前为止一切顺利。不幸的是,我似乎可以通过 Package.getPackage("my.package") 访问现有的包仅在第一次访问其类或接口(interface)之一之后。

以下示例说明了此行为:

包中的类 a.b

package a.b;

public class ClassInMitte {
}

访问包 oben.mitte 的示例程序

package other;

public class Refl {
public static void main(String[] args)
{
Package viaName = Package.getPackage("a.b");

System.out.println(viaName.getName());
System.out.println(viaName.hashCode());
}
}

正在运行Refl结果是 NullPointerException但是如果我添加 new ClassInMitte()作为第一条声明,我可以访问包信息。无论如何,我必须先访问包的内容,然后才能访问包信息本身。这是有道理的,否则类加载器必须在启动时扫描整个类路径。

但是有没有一种简单的方法可以在不访问包内容的情况下访问包信息呢?我知道我可以使用像 reflections 这样的框架但“轻量级”解决方案将是我的首选解决方案。

最佳答案

Package.getPackage只返回当前类加载器已知的包,唯一的方法是从该包加载类。它基本上是 ClassLoader.getPackage 的包装。 .

关于java - 如何通过 Package.getPackage(...) 访问包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515777/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com