草庐IT

java - 为什么这个枚举代码是对静态字段的非法引用?

此代码无法编译,因为存在对静态字段的非法引用。publicenumFoo{A,B;privateFoo[]foos=newFoo[]{Foo.A};}你不应该能够从非静态字段初始化器访问静态字段吗?例如:publicclassFoo{staticintA;privateint[]foos=newint[]{Foo.A};}这编译得很好。请注意,在第一个示例中将foos设置为静态编译。 最佳答案 查看Java语言规范,第三版,第8.9节http://java.sun.com/docs/books/jls/third_edition/h

java - 通过使用特定于该枚举的 int 来设置枚举?

大家好。所以我有一组枚举和一个带有与这些枚举对应的整数的数据库。像这样的东西,例如:publicstaticenumDay{SUNDAY(1),MONDAY(2),TUESDAY(3),WEDNESDAY(4),THURSDAY(5),FRIDAY(6),SATURDAY(7);publicfinalintfId;privateDay(intid){this.fId=id;}}我还有一个数据库,它只用整数来引用这些天,这些整数对应于上面枚举集中的int。我想要做的是查询一个数据库,它将返回一个整数,然后根据从数据库返回的整数将枚举数设置为一个对象。我可以这样做:publicstatic

java - 以多态方式将 Java 枚举值转换为字符串列表

我有一些辅助方法可以将枚举值转换为适合由HTML显示的字符串列表元素。我想知道是否有可能将它们重构为一个单一的多态方法。这是我现有方法之一的示例:/***Getsthelistofavailablecolours.**@returnthelistofavailablecolours*/publicstaticListgetColours(){Listcolours=newArrayList();for(Colourcolour:Colour.values()){colours.add(colour.getDisplayValue());}returncolours;}我对Java泛型还

java - 无法在 Eclipse 中编译枚举

在Eclipse中尝试在我的Android项目中引入枚举时,我遇到了以下问题:编译器说:无法解析类型java.lang.Enum。它是从所需的.class文件中间接引用的Enum类型不是通用的;它不能用参数参数化我在Ubuntu10.04下工作并使用Eclipsev.3.5.2。尝试同时使用Java6OpenJDK和Java6Sun,但没有成功。谁能帮我解决这个问题?代码如下:publicclassMyClass{publicMyClass(){}...enumMyEnum{CONST1,CONST2,CONST3;}} 最佳答案

java - Java 枚举的性能?

我正在实现一款2人游戏,该游戏将在紧密循环中运行数十万次,然后性能至关重要。我的代码实际上是这样的:publicclassTable{privatefinalintWHITE_PLAYER=+1;privatefinalintBLACK_PLAYER=-1;privatefinalintcurrentPlayer;privatefinalintotherPlayer;...}我想知道如果我会选择替换,我是否会受到任何性能影响privatefinalintWHITE_PLAYER=+1;privatefinalintBLACK_PLAYER=-1;定义为枚举publicenumPlaye

java - 为什么枚举构造函数不能访问静态字段

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whycan’tenum’sconstructoraccessstaticfields?enumTest{e1,e2;inti=0;staticintj=5;Test(){System.out.println(i+""+j);}}在上面的代码中,构造函数可以访问实例变量,但不能访问静态变量J。我读过与其他作者相关的答案都说e1和e2在J(静态字段)初始化之前初始化,但是根据javaspec所有静态字段当类加载到内存时初始化,即在运行构造函数之前。因此,在运行Test()构造函数之前,必须初始化静态变量j。我无

java - 枚举超过静态初始化程序的 65535 字节限制......最好做什么?

我已经启动了一个相当大的所谓描述符枚举,我想将其用作模型中的引用列表。但现在我第一次遇到了编译器/VM限制,所以我正在寻找处理这个问题的最佳解决方案。这是我的错误:静态初始化程序的代码超出了65535字节的限制很明显这是从哪里来的——我的Enum有太多的元素。但我需要这些元素-没有办法减少该集合。最初我计划使用单个枚举,因为我想确保枚举中的所有元素都是唯一的。它用于Hibernate持久性上下文,其中对枚举的引用作为字符串值存储在数据库中。所以这一定是独一无二的!我的Enum的内容可以分为几组属于一起的元素。但是拆分Enum会消除我在编译时获得的独特安全性。或者这可以通过某种方式使用多

java - 无法使用私有(private)变量对非静态字段 memberVariable 进行静态引用

我创建了一个带有一个私有(private)成员变量的枚举。当我尝试访问成员变量时,编译状态为“无法对非静态字段memberVariable进行静态引用”。如果变量不是私有(private)的(例如protected或受包保护的),它可以正常编译。我不明白变量的范围与实现的抽象函数的类型(静态,非静态)有什么关系。谁能教教我?publicenumEnumWithAbstractMethodAndMembers{TheOneAndOnly(1){@OverridepublicintaddValue(finalintvalue){returnmemberVariable+value;}};p

具有复杂类型的 Python 枚举

我是Python的新手,我想知道我是否可以构建具有复杂结构的枚举,而不仅仅是原始类型。例如(伪代码):Point::Enumx,yconstructor(x,y){...}bottom_left=Point(0,0)top_left=Point(0,100)top_right=Point(100,100)bottom_right=Point(100,0)到目前为止,我只能找到提到带有字符串或整数的枚举的Python文档。 最佳答案 如果您希望Point作为跟踪角点的Enum的独立实体,那么您需要将它们分开:fromenumimpor

python - python 中的枚举转换器

我有一个枚举classNationality:Poland='PL'Germany='DE'France='FR'...Spain='ES'我有两个方法原型(prototype):#Iwantsomethinklikeinc#defconvert_country_code_to_country_name(country_code):printEnum.Parse(typeof(Nationality),country_code)#thisasecondsolution,butithasalotofifsdefconvert_country_code_to_country_name(co