我遇到了这段代码
ResourceBundle BUNDLE = ResourceBundle.getBundle("abcdE");
我想知道在哪里可以找到要加载的文件?我在磁盘上找不到文件abcdE。
我遇到了这段代码
ResourceBundle BUNDLE = ResourceBundle.getBundle("abcdE");
我想知道在哪里可以找到要加载的文件?我在磁盘上找不到文件abcdE。
来自 ResourceBundle 的 getBundle 文档:
*....getBundle 然后遍历候选包名称以找到第一个可以实例化实际资源包的名称。对于每个候选包名称,它会尝试创建一个资源包:
首先,它尝试使用候选包名称加载一个类。如果可以使用指定的类加载器找到并加载这样的类,与 ResourceBundle 的分配兼容,可以从 ResourceBundle 访问,并且可以实例化,则 getBundle 创建此类的新实例并将其用作结果资源包。
否则,getBundle 会尝试定位属性资源文件。它通过替换所有“。”从候选包名称生成路径名称。带有“/”的字符并附加字符串“.properties”。它尝试使用 ClassLoader.getResource 查找具有此名称的“资源”。(请注意,getResource 意义上的“资源”与资源包的内容无关,它只是数据的容器,例如文件。)如果找到“资源”,它会尝试创建从其内容中创建一个新的 PropertyResourceBundle 实例。如果成功,此实例将成为结果资源包。*
所以我的理解是:如果你的
a.b.c.d.E
不是一个类,那么它会寻找一个带有路径的属性文件
a/b/c/d/E.properties