Tag: 枚举

Java中的枚举inheritance?

我在做天体物理研究。 我写了一个包含Star,Band和Datfile类的包。 我也有枚举类型的BandName。 每个星都包含几个Band,每个Band包含几个Datfiles。 我有几个星系的观测数据。 对于其中的每一个,我创建了一个StarDatabase类(一个HashMap of Stars)和一个Main类。 我遇到的问题是使用枚举类型的BandName。 到目前为止,我使用的所有数据都在I和V波段。 现在我有J,H和K波段的数据。 如果我只是简单地将J,H和K添加到BandName,那么迭代BandName中所有项目并执行某些操作的所有循环现在都会被破坏。 有任何想法吗? 编辑:总结我的问题,我希望每个包都有自己的BandName枚举,它可以迭代。 但这不起作用,因为Star包中的方法期望Star.BandName类型的对象,并且我提供的类型为IndividualPackage.BandName的对象。

嵌套枚举 – 为什么使用它?

我已经看到在枚举中声明了枚举的构造。 这是用来做什么的?

Java可扩展枚举

有没有办法编写可以扩展的枚举。 我有几种方法可以随时提供给我的枚举。 例如,我对我的数据库字段使用枚举。 我在数据库中包含实际的字段名称。 public enum ORDERFIELDS { OrderID(“Order_ID”); private String FieldName; private ORDERFIELDS(String fname) { this.FieldName = fname; } public String getFieldName() { return FieldName; } }

默认情况下枚举中变量的访问级别是什么

最近我遇到了以下代码: enum Animals { DOG(“woof”), CAT(“meow”), FISH(“burble”); String sound; Animals(String s) { sound = s; } } class TestEnum { static Animals a; public static void main(String[] args) { System.out.println(a.DOG.sound + ” ” + a.FISH.sound);//Expected compilation failure } } 我希望代码无法编译因为这个a.DOG.sound部分。 但令我惊讶的是它没有。 我四处搜索,包括官方文档,以找出访问级别,但一无所获。 是公开的还是默认的 ?

如何在枚举中调用其他方法?

enum Enum1 { BIG(8), HUGE(10) { public String getName() { return “Huge”; } public String getContry() { return “India”; }//additional Method }, OVERWHELMING(16) { public String getName() { return “OVERWHELMING”; } }; private int ounces; public int getOunes() { return ounces; } public String getName() { return “Ponds”; } Enum1(int ounces1) { ounces = ounces1; […]

我应该尝试在Java中创建可逆枚举还是有更好的方法?

我似乎多次遇到这个问题,我想问一下社区是否只是在咆哮错误的树。 基本上我的问题可以归结为:如果我有一个值很重要的枚举(在Java中),我应该使用枚举还是有更好的方法,如果我使用枚举那么什么是反向查找的最佳方法吗? 这是一个例子。 假设我想创建一个代表特定月份和年份的bean。 我可能会创建如下内容: public interface MonthAndYear { Month getMonth(); void setMonth(Month month); int getYear(); void setYear(int year); } 在这里,我将我的月份存储为一个名为Month的单独类,因此它是类型安全的。 如果我只是输入int,那么任何人都可以传入13或5,643或-100作为数字,并且在编译时无法检查它。 我限制他们把一个月我将实现为枚举: public enum Month { JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER; } 现在假设我有一些我想写的后端数据库,它只接受整数forms。 那么标准的方法似乎是: public enum Month { JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), […]

Java成员枚举类型是否应该大写?

这里的肛门问题:我们有Java枚举,它们是自己的类,以及作为类成员的枚举: public enum reportType { … 每次我看到它都会刺激我*因为当我看到它在声明中使用时,它是一个类型,并且类型应该大写。 但是当我试图利用它时,Eclipse警告我不应该大写字段名称。 我认为Eclipse可能比我更了解官方的Java约定,但它似乎并不正确。 甚至翻阅了Java约定文档,但没有看到引用这个问题。 没有双关语意

generics和类<? 扩展Enum >,EnumSet.allOf(class)vs class.getEnumConstants()

我有以下BeanValidation代码可以正常工作,并允许validation带有注释的bean: @EnumValue(enumClass = MyTestEnum.class) private String field; public enum MyTestEnum { VAL1, VAL2; } 仅当字段值为“VAL1”或“VAL2”时才会进行validation。 public class EnumNameValidator implements ConstraintValidator { private Set AVAILABLE_ENUM_NAMES; @Override public void initialize(EnumValue enumValue) { Class<? extends Enum> enumSelected = enumValue.enumClass(); Set<? extends Enum> enumInstances = Sets.newHashSet(enumSelected.getEnumConstants()); AVAILABLE_ENUM_NAMES = FluentIterable .from(enumInstances) .transform(PrimitiveGuavaFunctions.ENUM_TO_NAME) .toImmutableSet(); } @Override public boolean isValid(String value, ConstraintValidatorContext […]

Java Enum valueOf效率

您认为哪个更有效率? 使用’WeekDay’只是一个例子: public enum WeekDay { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY; } 循环并首先validation日期字符串: public void parseString(String line) { String[] tokens = line.split(); String day = tokens[1]; // day ‘should’ always be a weekday if (isValidWeekDay(day)) { WeekDay weekDay = WeekDay.valueOf(day); // won’t throw exception … } else { throw new InvalidWeekDayException(day); // subclass of RuntimeException […]

枚举实例默认是静态的吗?

enum Animals{ DOG(“woof”), CAT(“Meow”), FISH(“Burble”); String sound; Animals(String s) { sound = s; } } public class TestEnum{ static Animals a; public static void main(String ab[]){ System.out.println( a ); System.out.println( a.DOG.sound + ” ” + a.FISH.sound); } } 在上面的例子中,为什么当a为null且枚举未声明为静态时,我们能够访问枚举的实例(即作为a.DOG.sound)? 枚举实例默认是静态的吗?