使用 Java,如何限制对象属性具有某些值?我想创建一个代表“位置类型”的 Java 对象,但我想将该类的使用限制为仅代表所有可能类型的大约 100 个字符串?这个的设计模式是什么?
我能想到的就是创建一个字符串数组列表,每次用户实例化对象时,我都会遍历整个列表以寻找匹配项。不过,这对我来说似乎有点像 hack,我想把它做好。
使用 Java,如何限制对象属性具有某些值?我想创建一个代表“位置类型”的 Java 对象,但我想将该类的使用限制为仅代表所有可能类型的大约 100 个字符串?这个的设计模式是什么?
我能想到的就是创建一个字符串数组列表,每次用户实例化对象时,我都会遍历整个列表以寻找匹配项。不过,这对我来说似乎有点像 hack,我想把它做好。
使用 Java 的枚举怎么样?您的对象将仅受该枚举的类型限制,然后您将受到枚举中大约 100 个字符串的限制。
对于一组 100 个左右的固定值,enum
类型是最佳答案。不过有几点需要注意:
如果值的集合不是固定的......在某种程度上你可以将它们硬连接到你的代码中......那么enum
类将无法工作。Java 中没有任何形式的enum
类允许您向现有枚举类添加新值而无需重新编译等。
如果您有大量的值,则enum
该类将遇到 JVM 规范强加的一个或多个限制。例如,编译器为enum
类生成的静态初始化代码不能包含超过 64K 的字节码。
您可以为字符串或枚举使用允许值的 HashSet(查找速度更快,您只想知道它是否包含)。
另一个想法,因为它是一个有界集合,会为这些字符串创建一个枚举。使对象属性成为枚举类型。那就不用担心了。