Tag: 枚举

Java无法找到符号枚举

我正在用Java模拟国际象棋游戏,我遇到了一些问题。 这是代码的样子(相关部分): 枚举类Couleur.java: public enum Couleur {BLANC,NOIR} Piece.java: 公共抽象类Piece { (……) public Piece(Couleur couleurParam){ this.couleurPiece = couleurParam; } (……) } 最后是Tour.java: 公共课巡回延伸片{ (……) 公共游览(Couleur couleurParam){ 超级(couleurParam); } (……) } 所有.java文件都在同一个文件夹中。 然而在编译时我得到一个“找不到符号符号:变量NOIR位置:类高原” (Plateau是实例化Tour的类。) 任何人都可以帮我弄清楚这里有什么问题吗? 非常感谢, JDelage

用Java代表卡的类?

我正在用Java制作一个二十一点程序,我开始编写一个对象卡的类声明。 这是否足够,或者我应该采用哪些方法来掩饰? public class Card { public int suit; //Value 1-4 to represent suit public int value; //Value 1-13 to represent value (ie 2, J) public Card(int suit, int value) { //Not yet implemented } } 另外,有一种很好的方法可以在Java中使用C ++的枚举数据结构,因为这对卡名称和套装来说会很好吗?

多个枚举的国际化(枚举值的翻译)

再次讨论过之前我想要分享“我的”解决方案的内容,并要求增强,其他方法或最佳实践。 我有几个枚举,我需要国际化(我需要将枚举值翻译成某些语言,以便在jsf页面中显示它们)。 考试枚举: public enum TransferStatus { NOT_TRANSFERRED, TRANSFERRED } 翻译将是例如Not yet transferred / Transferred, all good 转换应存储在MessageBundle(属性文件)中。 我正在寻找一个简单,通用的解决方案(最好不需要在所有枚举中编写额外的代码),这在jsf方面并不需要太多。 只是要提一下,当然有可能两个不同的枚举产生相同的枚举值(例如,在不同的枚举中具有不同含义的COMPLETED值)。 我提出的解决方案: (1)将翻译存储在属性文件中,如下所示: TransferStatus.NOT_TRANSFERRED = Not yet transferred TransferStatus.TRANSFERRED = Transferred, all good (2)创建一个带有枚举的helper类并生成查找键: public class EnumTranslator { public static String getMessageKey(Enum e) { return e.getClass().getSimpleName() + ‘.’ + e.name(); } } (3)将此代码添加到每个枚举: public String getKey() […]

Enum和enum之间的区别

enum有valueOf(string)方法来获取枚举常量和java.lang.Enum类中存在的同名类型的方法,其名称为valueOf(enumClassName, string)我发现两者都给出相同的输出。 那么还有什么其他差异。 如果没有区别那么为什么JSL添加了Enum.valueOf() ? enum Season { WINTER,SUMMER } class Test { public static void main(String[] args) { String season = “WINTER”; //switch (Season.valueOf(colObject)) // following line achieves same thing switch (Enum.valueOf(Season.class, season)) // any other difference between both approach { case WINTER: { System.out.println(“Got it in switch case= VENDOR”); break; } default: System.out.println(“Fell […]

<h:selectManyListbox JSF和Enums Class Cast错误

这让我发疯,找不到错误。 这里是xhtml页面: … … 报告Bean: … private List severities; private List selectedSeverities = new ArrayList(); … public List getSeverities() { if (this.severities == null) { this.severities = new ArrayList(); this.severities.add(Severity.LOW); this.severities.add(Severity.HIGH); this.severities.add(Severity.UNDEFINED); this.severities.add(Severity.MEDIUM); } return severities; } 对于命令按钮,我有以下操作方法: if (!selectedSeverities.isEmpty()) { Severity s = selectedSeverities.get(0); } return; Wenn我选择了一个严重性(枚举)并按下命令按钮我得到以下堆栈跟踪: … Caused by: java.lang.ClassCastException: java.lang.String cannot be […]

访问枚举构造函数中的其他枚举

我需要类似以下的东西 enum EE { A(“anything”), B(“beta”), … Z(“zulu”), ALL, ; EE(String s) { this.s = s; } EE() { String s = “”; for (EE ee : values()) { // PROBLEM HERE if (ee != ALL) s += ” ” + ee.s; } this.s = s; } } 创建ALL我想访问枚举的其他成员。 由于values()返回null ,因此上述操作null 。 使用A , B […]

从枚举类型和序数中获取枚举值

public E decode(java.lang.reflect.Field field, int ordinal) { // TODO } 假设field.getType().isEnum()为true ,我将如何生成给定序数的枚举值?

如何为一些Java枚举添加常用方法? (抽象类祖先?)

我有一些Java枚举 public enum Aggregation { MORTGAGE( “Mortgage” ), POOLS( “Pools” ), PORTFOLIO( “Portfolio” ); private Aggregation( final String name ) { m_Name = name; } private String m_Name; static Map c_LOOKUP = new HashMap(); static { for (Aggregation agg:values()){ c_LOOKUP.put(agg.m_Name,agg); } } public Aggregation lookup(String name){ return c_LOOKUP.get( name ); } @Override public String toString() […]

Enum.valueOf会针对扩展Enum的未知类型类型发出警告?

给这个: Class enumClass = …; // being passed in from a constructor Enum e = Enum.valueOf(enumClass, aString); // produces a warning that looks like [unchecked] unchecked方法调用:java.lang.Enum中的valueOf(java.lang.Class,java.lang.String)应用于(java.lang.Class,java.lang.String) 我不想使用generics,因为这是一个重大变化。 我不想压抑。 我不明白为什么会发生这种警告。 我想这是因为无法扩展Enum类型。 我明白了。 但我不明白为什么通配符类会抛出这个奇怪的错误。 有没有办法解决这个问题,而不使用@SupressWarning或使用generics? 编辑 :要澄清,使用generics的以下代码会使警告消失。 class Foo<T extends Enum>{ Class enumClass; Enum e = Enum.valueOf(enumClass, aString); } 的用法就是我使用generics的意思。 我不能这样做,因为这将是一个巨大的层叠变化。

Enum遵循静态初始化程序的65535字节限制…最好的做法是什么?

我已经开始了一个相当大的所谓的Descriptors枚举,我想在我的模型中用作参考列表。 但是现在我第一次遇到编译器/ VM限制,所以我正在寻找最好的解决方案来处理这个问题。 这是我的错误: 静态初始化程序的代码超过65535字节限制 很明显这是从哪里来的 – 我的Enum只有很多元素。 但是我需要那些元素 – 没有办法减少那个元素。 最初,我计划使用单个枚举,因为我想确保枚举中的所有元素都是唯一的。 它用于Hibernate持久化上下文,其中对Enum的引用在数据库中存储为String值。 所以这必须是独一无二的! 我的Enum的内容可以分成几组属于一起的元素。 但拆分Enum会消除我在编译期间获得的独特安全性。 或者可以通过某种方式实现多个枚举? 我目前唯一的想法是定义一些名为Descriptor的接口,并编写几个实现它的Enum。 这样我希望能够使用Hibernate Enum映射,就好像它是单个枚举一样。 但我甚至不确定这是否有效。 我放松了独特的安全。 任何想法如何处理这种情况?