gpt4 book ai didi

java - 使用一组有限值的 String 类属性的最有效方法

转载 作者:行者123 更新时间:2023-12-01 13:17:23 24 4
gpt4 key购买 nike

在 Android 应用程序中,但这个问题通常也适用于 Java/OOP。

在我的应用程序中,我有一个 Job 类,它代表用户需要完成的作业。它的属性之一是status,它只能有三个值:“待完成”、“待处理”或“已完成”。

我希望允许将应用程序翻译成其他语言,因此我一直使用 XML 中的 Android 的 string-array 资源类型来存储这些值:

<string-array name="jobs_statuses">
<item>To be done</item>
<item>Pending</item>
<item>Completed</item>
</string-array>

我希望能够使用代码中的 status 属性进行比较,例如:

if (myJob.getStatus() == Job.STATUS_COMPLETED) // Do something

我考虑过将属性存储在类中作为 int 或其他数字类型,并在类中声明三个常量,如下所示:

public static final int STATUS_TO_BE_DONE = 1;
public static final int STATUS_PENDING = 2;

这将允许在我的代码中轻松确定给定作业的状态,但是,如何获取字符串值以在我的 UI 中使用?我考虑过有一个单独的 getStatusString 方法,可以像这样使用:

myJob.getStatus(); // returns 1
myJob.getStatusString(); // returns localised string for 'To be done' status

所以,简而言之,我希望能够:

  • 使用此属性进行比较
  • 获取此属性的字符串值,该值根据用户的设备语言进行本地化(存储在 XML 中的本地化字符串)

我是否缺少一个明显的解决方案?

提前致谢。

最佳答案

正如戴夫·牛顿已经建议的那样,我会做这样的事情:

enum Status {

TO_BE_DONE(R.string.to_be_done),
PENDING(R.string.pending),
COMPLETED(R.string.completed);

private final int mStringResource;

private Status(final int stringResource) {
mStringResource = stringResource;
}

public String asString(final Context context) {
return context.getString(mStringResource);
}

}

它允许您使用==进行比较,以及通过asString()方法获取本地化的String

关于java - 使用一组有限值的 String 类属性的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357882/

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