当前位置: 首页 > 知识库问答 >
问题:

类中只能分配给特定值的字符串属性

谭卜鹰
2023-03-14

我记得有一个数据结构保证某个字符串只能接收特定的值,它的工作原理就像一个接口什么的。我不记得这个数据结构的确切名称,也不容易找到它。

让我试着解释一下上下文。

假设我有一个名为 Foo 的类,其中包含参数位置。

Class Foo {
   public static final String TOP = "TOP";
   public static final String BOTTOM = "BOTTOM";
   public static final String MIDDLE = "MIDDLE";

   private String position;

   Foo(String position){
        this.position = position;
   }
}

如果我分配值顶部、底部或中间的位置,位置将被接受。如果我分配另一个值,它将引发异常。

new Foo(Foo.TOP)         // OK
new Foo(Foo.MIDDLE)      // OK
new Foo(Foo.BOTTOM)      // OK
new Foo("anystring")     // Throws Exception.

我知道我可以做一个简单的if else或switch并抛出一个异常,但是我想找到这个特定的数据结构。

共有1个答案

贺俊楚
2023-03-14

你应该用enum来解决这个问题。

Class Foo {
   public static enum Position {TOP, BOTTOM, MIDDLE};

   private Position position;

   Foo(String position){
        this.position = Position.valueOf(position);
   }
}

但请记住:枚举不是String。但是在枚举上,您可以调用toString(),也可以像我一样将String解析为enum

 类似资料: