Python3.4.0引入了enum,我看过doc但仍然不知道它的用途。从我的角度来看,enum.Enum是一个扩展的namedtuple类型,这可能不是真的。所以这些是我想知道的关于Enum的内容:何时何地使用Enum?为什么我们需要Enum?有什么优势?枚举到底是什么? 最佳答案 1.Whenandwheretouseenums?当您有一个变量采用一组有限的可能值中的一个时。例如,星期几:classWeekday(Enum):MONDAY=1TUESDAY=2WEDNESDAY=3THURSDAY=4FRIDAY=5SATURD
这个问题在这里已经有了答案:PythonEnum,whenandwheretouse?(1个回答)5年前关闭。在Python3.4中,我们在标准库中得到了一个Enum库:enum.我们可以获得enum的反向移植适用于Python2.4到2.7(甚至3.1到3.3),enum34在皮皮。但是我们在没有这个新模块的情况下已经相处了很长一段时间-那么为什么我们现在有了它?我对来自其他语言的枚举的目的有一个大致的了解。在Python中,通常使用如下的裸类并将其称为枚举:classColors:blue=1green=2red=3这可以在API中用于创建值的规范表示,例如:function_of
我有两个数组:Walls和Neighbors。publicboolean[]walls=newboolean[4];publicCell[]neighbors=newCell[4];我有一个枚举:enumDir{North,South,East,West}现在,我希望能够通过他们的方向访问墙壁或邻居,所以我不必传递一堆魔法索引。但是,当我阅读Enum.ordinal()的文档时,它说程序员几乎不会使用这种方法,这让我认为它不应该以这种方式使用。我正在考虑做类似的事情:ListavailableDirections=newArrayList();for(Dirdirection:Dir.
我有以下枚举:packageir.raysis.tcs.rule.days;publicenumDays{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;}我尝试将其映射为Set天数如下:@ElementCollection(targetClass=Days.class)@JoinTable(name="days",joinColumns=@JoinColumn(name="rule_id"))@Column(name="daysOfWeek",nullable=false)@Enumerated(EnumType.ST
Java允许我们在Enum上嵌入数据和行为。我不想直接在Enum上实现工厂,因为我认为这不是它的作用。但我可以将类引用放在枚举上,并在外部工厂上构造对象。与传统的工厂模式相比,最适合您的实现方式是什么?在哪种情况下使用哪种解决方案更好?现在,代码。两种解决方案中用于构造对象的函数。如果需要,可用于使用Map实现fly-weight模式。privateActiongetAction(ClassactionClazz){//logger+errorhandlingreturnactionClazz.newInstance();}1)与传统工厂:publicenumActionEnum{LO
在什么情况下,枚举比保证唯一元素的Collection(我猜是java.util.Set的实现者……)更合适?(这是对我之前的question的一种跟进) 最佳答案 基本上当它是一组定义明确的、在编译时已知的固定值时。您可以非常轻松地将枚举用作一个集合(使用EnumSet),它允许您定义行为、按名称引用元素、打开它们等。 关于java-何时在Java中使用Enum或Collection,我们在StackOverflow上找到一个类似的问题: https://s
我正在尝试在以我自己的Enum作为参数的抽象类中创建一个抽象方法。但我也希望Enum是通用的。所以我这样声明:publicabstract>voidtest(Enumcommand);在实现中,我将枚举作为那个:publicenumPerspectiveCommands{PERSPECTIVE}方法声明变为:@Overridepublic>voidtest(Enumcommand){}但如果我这样做:@Overridepublic>voidtest(Enumcommand){if(command==PerspectiveCommands.PERSPECTIVE){//dosomethi
在JDK1.5之前的Java中,“TypesafeEnum”模式是实现只能采用有限数量值的类型的常用方法:publicclassSuit{privatefinalStringname;publicstaticfinalSuitCLUBS=newSuit("clubs");publicstaticfinalSuitDIAMONDS=newSuit("diamonds");publicstaticfinalSuitHEARTS=newSuit("hearts");publicstaticfinalSuitSPADES=newSuit("spades");privateSuit(String
我们的团队正在讨论Java的代码约定:interface:FooorIFooorFooInterface?abstract:Foo还是AbstractFoo?Enums:Foo还是FooEnum?我基本上是想把我的个人喜好放在一边:)所以支持一个或其他约定的理由是非常受欢迎的。 最佳答案 在Java中:Foo、AbstractFoo和Foo-尽管AbstractFoo可能只是Foo。证据:java.util.List(接口(interface))java.util.AbstractList(抽象类)java.util.Formatt
这个问题在这里已经有了答案:11年前关闭。PossibleDuplicate:javaEnumdefinitionBetterformulatedquestion,thatisnotconsideredaduplicate:WhatwouldbedifferentinJavaifEnumdeclarationdidn'thavetherecursivepart如果语言设计者只使用Enum会如何影响语言?现在唯一的区别是有人可以写A扩展Enum但是因为在java中不允许扩展仍然是非法的枚举。我也在考虑有人向jvm提供一个字节码,该字节码将smth定义为扩展枚举-但泛型不能影响它,因为它们