实例化一个枚举类

4
以下代码给我抛出了很多错误。那么为什么不可能像下面这样有一个只有构造函数的枚举,以便在其他地方可以实例化它呢?
public  class TestEnum{
     enum Animal
     {
         public Animal(String name)
         {
             this.name = name;
         }
         String name;
     }
}

有没有办法实例化枚举,或者这是否违反了枚举的基本属性/功能,它只应该用于创建一组预制对象?

5
枚举不能被实例化。顺便问一下,如果您的目标对象必须被实例化,那么它与普通类有何不同? - Amir Pashazadeh
2
是的,这根本不是枚举的用途。 - Dawood ibn Kareem
1
@AmirPashazadeh:我明白了。我想到了一个模型,其中我可以拥有一组预先制作/固定的对象,并且还应该有一个在需要时实例化的选项。我猜这不可能使用枚举,对吧! - Aarish Ramesh
1个回答

9

因为枚举类型 enum 由枚举常量值组成(在编译及运行时均为常量)

除此之外,您的代码几乎是正确的,例如

enum Animal {
  Dog("Bark"), Cat("Meow"); // Dog and Cat.
  Animal(String name) {     // No, it can't be public.
    this.name = name;
  }

  String name;
}

如果您希望使用动态值,可以使用 class


是的,我明白了。我想到了一个模型,其中我可以拥有预先制作/固定的对象集,并且还应该有在需要时实例化的选项。我猜这不可能使用枚举,对吧! - Aarish Ramesh
1
@aarish 我认为你正在寻找一个动物工厂(听起来很有趣)或一个包含这些动物的映射。要注意线程安全。 - Silviu Burcea
编写一个程序来实现接口。你的类和枚举类型都可以实现该接口。然后,当需要时,你可以返回枚举类型,或者创建一个类的实例。 - Elliott Frisch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接