Tag: 枚举

为什么一个枚举有一个包私有构造函数?

由于枚举构造函数只能由其常量调用,为什么它被允许为包私有?

我如何要求generics参数是一个实现接口的枚举?

我并不是100%相信这是一个好主意,但我今天遇到了一些代码,目前实现为: class MyWidget <T extends Enum<T> > { MyWidget(Map<T, Integer> valueMap) { mValueMap = valueMap; } Map<T, Integer> mValueMap; } MyWidget然后提供使用mValueMap将传入的Enum转换为Integer 。 我正在考虑做的是试图重构这个,所以我要声明我的枚举: interface MyInterface { public Integer getValue(); } enum MyEnum implements MyInterface { foo, bar; public Integer getValue() { return ordinal(); } } 然后我可以将MyWidget重MyWidget一些看起来很模糊的东西: public class MyWidget<T extends Enum<T> extends MyInterface> { … […]

在枚举中实现内部接口时的循环inheritance

我有以下实现,给出了一个编译器错误: public enum FusionStat implements MonsterStatBuilderHelper { ATTACK { @Override public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard) { Objects.requireNonNull(baseMonsterCard); Objects.requireNonNull(fusedMonsterCard); Objects.requireNonNull(fusionCard); if (baseMonsterCard.equals(fusedMonsterCard)) { throw new IllegalArgumentException("baseMonsterCard and fusedMonsterCard need to be different"); } return new MonsterCard.MonsterCardBuilder(baseMonsterCard) .attack(baseMonsterCard.getAttack() + (fusionCard.getFusionPower() * fusedMonsterCard.getAttack())); } }, HITPOINTS { @Override public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard […]

如何定义Enum项目的属性

我已经阅读了Java和C ++之间的枚举差异? 但我仍然困惑。 我想下面的返回相关的string: public enum Checker { EMPTY ("Empty"), RED ("Red"), YELLOW ("Yellow"); } 从我所读到的,这应该是可能的。 只是希望您能对此有所了解。

如何获得通过string或整数的枚举值

如何获得枚举值,如果我有枚举string或枚举int值。 例如:如果我有一个枚举如下: public enum TestEnum { Value1 = 1, Value2 = 2, Value3 = 3 } 而在一些stringvariables中,我的值为“value1”,如下所示: string str = "Value1" 或者在一些intvariables我有值2喜欢 int a = 2; 我怎么能得到枚举的实例? 我想要一个generics方法,我可以提供枚举和我的inputstring或int值来获取枚举实例。

私有枚举的构造函数

这个enum的构造函数是私有的。 那是什么意思? public enum SLocale { EN_US(Locale.US, "www.abc.com", "www.edc.com", "www.vvv.com", "www.earn.com"); List<String> domains; Locale loc; IMap map; private SLocale(Locale loc, String… domains) { this.domains = Arrays.asList(domains); this.loc = loc; this.siteMap = Factory.getMap(loc); } public List<String> getDomains() { return domains; } public Locale getLoc() { return loc; } public ISiteMap getMap() { return map; } }

C#int来枚举转换

可能重复: 铸造诠释枚举在C# 如果我有以下代码: enum foo : int { option1 = 1, option2, … } private foo convertIntToFoo(int value) { // Convert int to respective Foo value or throw exception } 转换代码是什么样的?

绑定ComboBoxes枚举…在Silverlight中!

所以,网页和StackOverflow,有很多很好的答案,如何将一个combobox绑定到WPF中的枚举属性。 但是Silverlight缺less所有使这个可能的function:(例如: 您不能使用接受types参数的genericsEnumDisplayer风格的IValueConverter ,因为Silverlight不支持x:Type 。 你不能使用ObjectDataProvider ,就像这种方法一样 ,因为它不存在于Silverlight中。 由于标记扩展在Silverlight中不存在,所以不能像#2链接的注释那样使用自定义标记扩展。 因为XAML不支持generics(并且使得它们的工作都依赖于标记扩展,Silverlight不支持),所以不能使用generics的#1版本。 大规模的失败! 正如我所看到的,做这项工作的唯一方法是要么 作弊和绑定到我的ViewModel中的string属性,其setter / getter进行转换,使用View中的代码隐藏将值加载到ComboBox中。 为每个我想要绑定的枚举创build一个自定义的IValueConverter 。 有没有更通用的替代scheme,即不要一遍又一遍地写我想要的每一个枚举? 我想我可以做解决scheme#2使用接受enum作为types参数的generics类,然后创build新的类为每个我想要的枚举 class MyEnumConverter : GenericEnumConverter<MyEnum> {} 你的想法是什么?

嘲笑Java枚举添加一个值来testing失败的情况

我有一个枚举开关或多或less像这样: public static enum MyEnum {A, B} public int foo(MyEnum value) { switch(value) { case(A): return calculateSomething(); case(B): return calculateSomethingElse(); } throw new IllegalArgumentException("Do not know how to handle " + value); } 我想要testing覆盖所有的行,但是由于代码需要处理所有的可能性,所以我不能在交换机中没有相应的case语句的情况下提供一个值。 扩展枚举以添加额外的值是不可能的,只是嘲笑equals方法返回false将不起作用,或者是因为生成的字节码使用幕后的跳转表来转到正确的情况下…所以,我已经认为PowerMock或许可以实现一些黑魔法。 谢谢! 编辑 : 由于我拥有枚举,我以为我可以添加一个方法的值,从而完全避免切换问题; 但是我仍然留下这个问题,因为它仍然很有趣。

使属性不可枚举的好处是什么?

可枚举性是属性的三个属性之一:可写性,可枚举性和可configuration性。 我的问题是: 在JavaScript中使属性不可枚举有什么好处? 我知道我们是通过使它们不可枚举来隐藏财产,但财产隐藏的好处是什么? 我们可以访问非枚举属性吗? 如果是,那么使它们不可枚举的好处是什么? 对象的所有预定义属性都设置为不可枚举吗? 比如Array的pop和push属性是不可枚举的?