Tag: enums

Java枚举属性根据访问顺序返回null

我正在探索java中的枚举,看看它们是如何被滥用的,我遇到了一个我无法解释的行为。 考虑以下课程: public class PROGRAM { public enum ENUM {; public enum ANIMALS {; public enum CATS { FELIX(DOGS.AKAME), GARFIELD(DOGS.WEED), BUBSY(DOGS.GIN); CATS(DOGS dog) {this.RIVAL = dog;} public DOGS RIVAL; } public enum DOGS { GIN(CATS.FELIX), WEED(CATS.BUBSY), AKAME(CATS.GARFIELD); DOGS(CATS cat) {this.RIVAL = cat;} public CATS RIVAL; } } } public static void main(String[] args) { System.out.println(ENUM.ANIMALS.CATS.GARFIELD.RIVAL); […]

元素周期表的数据结构

我的目标是使用元素周期表(或列表)来获取有关Java中特定元素的信息。 我想通过primefaces序数和符号进行搜索(但转换应该很简单)。 我在这个JQuery插件中找到了这些信息。 但它存储为JSON文件。 看起来硬编码信息是最有效的(因为它不会经常更改并且由于性能原因),但是如何将JSON转换为硬编码的enum ?

枚举valueOf()的线程安全

这是一种变形的“perful -if or switch”困境…… 考虑使用静态方法的multithreading应用程序,该方法包含一个long(十几个条件) if语句,它检查对象的类型并相应地返回一个值,即类似 public static String checkType(Class type) { if (type == A.class) { return aString; } else if (type == B.class) { return bString; } … else if (type == z.class) { return zString; } } 显然,switch语句在这里不能直接应用,所以一个常见的模式是有一个enum并调用它的valueOf() ,即做类似的事情 public enum Strings { A(aString), B(bString), …, Z(zString) private final String value; private […]

Java:使用颜色操作(加,减)? – 恒定类中的颜色

我正在使用java.awt.Color实例。 有没有办法对颜色进行算术运算? 像rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190) ? 我正在尝试做的事情:我有一个带有桌子的gui,如果用户点击一个单元格,其他单元格会根据它们与所选单元格的关系改变颜色。 我正在寻找一种方法来避免硬编码基色是什么,以及它们改变的颜色值。 因此,所选单元格可能是rgb(255, 0, 0) ,其他所有内容可能基于它们的值在rgb(0, 0, 0)和rgb(0, 255, 0) 。 我在想…枚举? import java.awt.Color; public enum ColorConstant { SELECTED (new rgb(255, 0, 0), “Red”), MAX_DISTANCE (new rgb(0, 255, 0), “Green”) private Color shade; private ??? whichColorToModify; }

Java通用枚举function使用java 8默认方法和实用程序类

下面是我提出的失败尝试,指的是使用Reflection的Java Generic Enum类 。 想找到一个更好的方法来做到这一点。 我用这种方法找到了几个问题: 每次我都需要传递类类型。 示例 – EnumUtility.fromKey(Country.class,1) fromSet在城市和国家都重复 public enum City implements BaseEnumInterface { TOKYO(0), NEWYORK(1); private final int key; public static Set fromValue(Set enums) { return enums.stream().map(City::getKey).collect(Collectors.toSet()); } public int getKey() { return key; } private City(int key) { this.key = key; } } public enum Country implements BaseEnumInterface { USA(0), […]

如何在java中强制转换为CRTP?

我有一个非常简单的例子,我做了一些基本的通用赋值: final Detail detail = field.getAnnotation(Detail.class); final String example = detail.example(); final Class type = field.getType(); if (List.class.isAssignableFrom(type)) … else if (Enum.class.isAssignableFrom(type)) setValue(contract, field, Enum.valueOf(type, example)); else if (…) ….. 但是Enum.valueOf()有点难以调用,在我的例子中,错误是: java.lang.Enum中的valueOf(java.lang.Class,java.lang.String)不能应用于(java.lang.Class,java.lang.String) 这非常有意义,因为type是Class 。 但由于Enum是CRTP,我找不到一种好的方法来转换类型以使编译器满意。 是使用原始类型Enum.valueOf((Class)type, example))唯一的答案? 它给了我2个警告,而不是只有一个。

哪个更适合静态数据 – 最终的char或enum?

关于我的扑克Java程序,选择枚举超过字符和整数是明智的决定吗? 据我所知,为char分配一个单独的整数值有一个好处,就是在比较卡值以决定胜利者时,应用数学运算符的简易性。 然而,这可能是枚举,如果是这样我不知道。 请有人向我解释每个人的adv / disadv吗? 我宣布卡排名的第一个选择是枚举: public enum Rank { DEUCE (1), THREE (2), FOUR (3), FIVE (4), SIX (5), SEVEN (6), EIGHT (7), NINE (8), TEN (9), JACK (10), QUEEN (11), KING (12), ACE (13) } public enum Suit { CLUBS (1), DIAMONDS (2), HEARTS (3), SPADES (4) } 我的第二个选项是静态最终字符,其中分配的int值如下: public static final […]

枚举和单身 – 顶级vs嵌套枚举

现在众所周知,在java中创建单例的推荐方法是通过枚举(参见例如此处 ) 但是(例如在这个答案中 )似乎(在评论中回复我的@MikeAdler)考虑在单例类中使用枚举的正确方法(例如,请参阅此处的完整示例,或给出的代码)下面)。 我似乎并不真正理解这个的需要/使用 – 有人可以详细说明(并且最好为这个成语提供正确的方言)吗? public class Enclosing { private Enclosing() {} static enum Singleton { INSTANCE; private static final Enclosing singleton = new Enclosing(); public Enclosing getSingleton() { return singleton; } } } 编辑:一个人将通过Enclosing.Singleton.INSTANCE.getSingleton();获得单身人士Enclosing.Singleton.INSTANCE.getSingleton();

使用JPA存储枚举值

说我有一个枚举: public enum NotificationType { Store(“S”), Employee(“E”), Department(“D”), All(“A”); public String value; NotificationType(String value) { this.value = value; } } 我想在数据库中存储S或E而不是Store或Employee 。 目前,我已将其映射到实体中,如下所示: @Enumerated(EnumType.STRING) private NotificationType notificationType; 但如果可能的话,不确定如何得到我想要的东西。

Datastax java驱动程序3.0.0未找到枚举注释

希望我正在阅读文档: http : //docs.datastax.com/en/developer/java-driver/3.0/java-driver/reference/crudOperations.html 。 枚举注释 如果您的类包含枚举类型字段,则使用枚举注释。 我有一个Java枚举,我想使用@Enumerated注释,但我似乎无法在3.0.0版本的驱动程序中找到它,它出现在2.1.9中。 $ find . -type f -name \*.jar|while read i; do echo ====== $i =====; jar -tf $i|grep Enumerated; done ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-javadoc.jar ===== ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-sources.jar ===== ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4.jar ===== ====== ./cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar ===== ====== ./cassandra-driver-core/2.1.7.1/cassandra-driver-core-2.1.7.1.jar ===== ====== ./cassandra-driver-core/2.1.9/cassandra-driver-core-2.1.9.jar ===== ====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0-sources.jar ===== ====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0.jar ===== ====== ./cassandra-driver-dse/2.1.5/cassandra-driver-dse-2.1.5.jar ===== ====== […]