gpt4 book ai didi

Java util 首选项构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:16 24 4
gpt4 key购买 nike

我正在尝试了解 java.util.prefs.Preferences 的不同构造函数有效,但不确定在不同情况下使用哪些。

对于一个,是否Preferences将首选项/属性保留到文件中?换句话说,我可以使用此类来存储我的应用程序运行时的首选项,还是所有内容都保存在内存中?

就构造函数而言,只有几种方法可以实例化 Preferences :

Preferences p = new Preferences();
Preferences p = Preferences.userNodeForPackage(this.getClass());
Preferences p = Preferences.userRoot();

API docs这些构造函数如下(分别):

Sole constructor.

Returns the preference node from the calling user's preference tree that is associated (by convention) with the specified class's package.

Returns the root preference node for the calling user.

所以我想我对不同 Preferences 之间的关系感到困惑实例、Java 类 (useNodeForPackage(Class<?>) ???) 和最终用户。所以我问:每个构造函数/工厂方法的作用有何不同,何时使用它们?

提前致谢!

最佳答案

“首先,首选项是否将首选项/属性保存到文件中?”

是的,数据是持久的。不,它不会必须将它们写入文件。存储方法是实现定义的,它可以将它们存储在远程数据库、注册表或二进制文件附带的实际文件中。在 Windows 上,默认实现写入注册表。 (这写在您链接的 API 文档的顶部)

“每个构造函数/工厂方法与其他方法有什么不同,何时使用它们?”

Preferences p = new Preferences();

这不能像@ojota84 在他们的帖子中提到的那样直接调用,它被下面的工厂方法使用:

Preferences p = Preferences.userNodeForPackage(this.getClass());

这允许 Preferences实现返回 Preferences特定于给定类并且不干扰其他类的首选项的对象。在 Windows 上,这通常返回 Preferences将 key 存储到 HKU\Software\JavaSoft\Prefs\myapplication\myclass\ 中的对象.在 XML 支持的文件中,这可能对应于 <myapplication><myclass>-data here-</myclass></myapplication> .

Preferences p = Preferences.userRoot();

这与上面的类似,但返回所有用户首选项的根对象。如果您认为偏好排列成一棵树。那么这是有道理的。在 Windows 上,这通常用 HKU\Software\JavaSoft\Prefs\myapplication\ 实现. XML 类比是您将访问 <myapplication>-data here-</myapplication> .

userRoot() 之间进行选择和 userNodeForPackage()

本质上这是一个偏好问题(双关语不是故意的)。如果您只需要存储一个或两个 key ,userRoot()将在您的注册表中创建更少的条目。如果您需要编写很多很多 key ,那么 userNodeForPackage()可能更好,因为您可以避免名称冲突和其他问题。无论是 XML 文件、数据库还是 Windows 注册表,您还可以获得更清晰的结构来支持您的偏好。

关于Java util 首选项构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16361188/

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