6

我曾经为我的应用程序有一个自定义首选项类。对于我的下一个爱好项目,我想切换到 Preferences API。但是 put 和 get 函数需要一个默认值,我不想在源文件中传播默认值。即使我的项目很小,我也无法想象在整个源代码中更改默认值。各位大佬是怎么用api的?我正在考虑将首选项 api 包装在另一个类中,但是使用 API 有什么意义,因为它只减轻了将文件保存到磁盘的负担,而使用序列化并不难?我错过了重点吗?

4

4 回答 4

2

您在这里混合了一些概念。代码中给出的默认值应该针对当地情况作为“合理的默认值”。如果您想拥有应用程序范围的默认值,那么您需要一个首选项提供程序,它允许您挂钩默认首选项和覆盖的用户首选项。本身可能是一个有价值的项目。

哦,“合理的默认值”是在不需要时避免配置的好方法,但允许用户或打包者在需要时提供更好的值。

@comment,我想我明白了。

我所说的“本地情况”是指在代码的上下文中。对于您的 GUI,您需要一个表示线程正在使用的内容的 display 值。因此,我会使用 Worker.DEFAULT_TIMEOUT 之类的东西。您的工作人员将在内部使用与默认值相同的值。这样,当您设置工作人员的行为时,您就可以检索配置的值或工作人员的默认值。

于 2008-10-20T19:50:25.563 回答
2

那么您可能希望通过实施AbstractPreferences. 你可以在这里看到一个基于 linux 的实现:

http://www.docjar.com/html/api/java/util/prefs/FilePreferencesImpl.java.html

祝你好运!

于 2011-12-08T10:35:31.033 回答
1

将所有默认值都放在一个类中以防止它们乱扔代码会很难吗?

我在最近的项目中使用了公共配置。我研究过 Java Preferences API,但我喜欢 Commons 项目的灵活性。而且您不必指定默认值!

于 2008-10-20T19:49:53.757 回答
1

您可以将默认值放在您捆绑在 .jar 文件中的 .preferences 文件中(或放在带有常量的专用类或接口中)。

我将它用于诸如窗口位置/大小、记住用于选择文件的默认文件夹、上次打开的文件和诸如此类的琐事之类的事情。我可以想到一些您使用首选项 API “免费”获得的有趣的东西:

  • 以操作系统推荐的方式做事;操作系统可能不允许您在应用程序文件夹中写入“设置文件”,并且用户不喜欢被询问他们要将设置保存在磁盘上的哪个位置,并且您不希望为每个平台实现自定义逻辑
  • 您的数据分别为每个操作系统用户保存
  • 即使您的应用程序被卸载(或在升级期间),也能保留用户数据的一种方法
  • 不需要数据库或访问文件系统

另外,我不喜欢序列化,也不推荐这样做。序列化意味着在新版本的应用程序中更改类时必须小心。

于 2010-06-17T23:22:06.187 回答