0

使用 Java,如何限制对象属性具有某些值?我想创建一个代表“位置类型”的 Java 对象,但我想将该类的使用限制为仅代表所有可能类型的大约 100 个字符串?这个的设计模式是什么?

我能想到的就是创建一个字符串数组列表,每次用户实例化对象时,我都会遍历整个列表以寻找匹配项。不过,这对我来说似乎有点像 hack,我想把它做好。

4

4 回答 4

4

使用 Java 的枚举怎么样?您的对象将仅受该枚举的类型限制,然后您将受到枚举中大约 100 个字符串的限制。

于 2012-08-14T01:55:06.293 回答
1

对于一组 100 个左右的固定值,enum类型是最佳答案。不过有几点需要注意:

  • 如果值的集合不是固定的......在某种程度上你可以将它们硬连接到你的代码中......那么enum类将无法工作。Java 中没有任何形式的enum类允许您向现有枚举类添加新值而无需重新编译等。

  • 如果您有大量的值,则enum该类将遇到 JVM 规范强加的一个或多个限制。例如,编译器为enum类生成的静态初始化代码不能包含超过 64K 的字节码。

于 2012-08-14T02:29:43.453 回答
1

您可以为字符串或枚举使用允许值的 HashSet(查找速度更快,您只想知道它是否包含)。

于 2012-08-14T01:55:34.577 回答
0

另一个想法,因为它是一个有界集合,会为这些字符串创建一个枚举。使对象属性成为枚举类型。那就不用担心了。

于 2012-08-14T01:55:39.943 回答