Tag: enums

如何在JNA中映射枚举

我有以下枚举如何在jna中映射? 该枚举在结构中进一步引用。 typedef enum { eFtUsbDeviceNotShared, eFtUsbDeviceSharedActive, eFtUsbDeviceSharedNotActive, eFtUsbDeviceSharedNotPlugged, eFtUsbDeviceSharedProblem } eFtUsbDeviceStatus; 阿卜杜勒·哈利克

Proguard不会保留class级成员的枚举

我正在开发一个作为java jar分发的库,我正在运行proguard,以便只暴露所需的接口。 我有一个配置类,包含一堆成员变量和一些枚举定义。 我的proguard脚本保留了成员变量,但枚举定义正在被混淆。 我已经尝试了所有我能想到的强迫proguard保留这些内部定义和公共枚举,但我不能让它工作。 现在我正在使用: -keep public class com.stuff.MyConfigObject { public *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } 如果我尝试: -keep public enum com.stuff.MyConfigObject.MyEnum 我得到一个模棱两可的错误:“注意:配置引用未知类’com.stuff.MyConfigObject.MyEnum’” 谢谢您的帮助!

Mockito:如何匹配任何枚举参数

我有这样的方法声明 private Long doThings(MyEnum enum, Long otherParam); 这个枚举 public enum MyEnum{ VAL_A, VAL_B, VAL_C } 问题:如何模拟doThings()调用? 我无法匹配任何MyEnum 。 以下不起作用: Mockito.when(object.doThings(Matchers.any(), Matchers.anyLong())) .thenReturn(123L);

如何通过重写方法来使用java enum中的字段?

任务是用java enum实现漂亮的策略设计模式: public enum MyEnum { FIRST { @Override public String doIt() { return “1: ” + someField; //error } }, SECOND { @Override public String doIt() { return “2: ” + someField; //error } }; private String someField; public abstract String doIt(); } 但是当提到someField我得到了 无法对someField的非静态字段进行静态引用。 有什么不对,有可能做得更好吗?

如何初始化基于Java枚举的Singleton?

如果我必须在使用该对象之前初始化它,那么初始化基于java enum的单例的正确方法是什么。 我已经开始编写代码,但我不确定我是否做得对。 你能帮我实现这个单身对我好吗? public enum BitCheck { INSTANCE; private static HashMap props = null; public synchronized void initialize(HashMap properties) { if(props == null) { props = properties; } } public boolean isAenabled(){ return “Y”.equalsIgnoreCase(props.get(“A_ENABLED”)); } public boolean isBenabled(){ return “Y”.equalsIgnoreCase(props.get(“B_ENABLED”)); } }

将Enum值作为参数从JSF传递

我试图将我现有的代码迁移到使用Enum,由于我缺乏Enum的经验,我遇到了一些问题。 首先,这是我的结构。 在我的EJB ,与Entity一起,我有一个枚举类(不确定它是否甚至是一个类)。 public enum Type { PROFILE_COMMENT, GROUP_COMMENT } 在我的托管bean myBean.java ,我有 @ManagedBean(name=”myBean”) @SessionScoped public class myBean { private Type type; public myBean() { } public Type getType() { return type; } public void setType(Type type) { this.type = type; } public void Test(Type t){ System.out.println(t); } } 然后在我的JSF, 我得到了java.lang.ClassNotFoundException:说Type不是类 我输入EJB的原因是我可以为我的Entity创建一个枚举类型,所以我的查询看起来像这样 select c […]

枚举 – 静态和实例块

我已经了解到,在Java中,在初始化类时执行静态块,并在构造每个类的实例之前执行实例块。 我总是在实例块之前看到要执行的静态块。 为什么案件与enums相反? 任何人都可以请解释示例代码的输出: enum CoffeeSize { BIG(8), LARGE(10),HUGE(12),OVERWHELMING(); private int ounces ; static { System.out.println(“static block “); } { System.out.println(“instance block”); } private CoffeeSize(int ounces){ this.ounces = ounces; System.out.println(ounces); } private CoffeeSize(){ this.ounces = 20; System.out.println(ounces); } public int getOunces() { return ounces; } } 输出: 实例块 8 实例块 10 实例块 12 实例块 20 […]

是否可以在Java 8中扩展枚举?

只是玩,并想出一个甜蜜的方式来添加Java Enum toString()方法中的 enumfunction。 一些进一步的修补让我几乎也添加了一个整洁(即没有抛出exception)反向查找,但有一个问题。 据报道: error: valueOf(String) in X cannot implement valueOf(String) in HasValue public enum X implements PoliteEnum, ReverseLookup { overriding method is static 有办法吗? 这里的目的是静默添加(通过接口实现,使用default方法,如我在链接的答案中添加了politeName )一个lookup方法,该方法执行valueOf函数而不抛出exception。 可能吗? 显然现在可以扩展enum – 直到现在我的Java主要问题之一。 这是我失败的尝试: public interface HasName { public String name(); } public interface PoliteEnum extends HasName { default String politeName() { return name().replace(“_”, ” […]

Hibernate @Enumerated映射

Hibernate提供@Enumerated注释,它使用ORDINAL或STRING支持两种类型的Enum映射。 当我们使用EnumType.STRING映射时,它采用Enum的“名称”而不是Enum的toString()表示。 在数据库列仅包含一个字符的情况下,这是一个问题。 例如,我有以下枚举: public enum Status{ OPEN{ @Override public String toString(){ return “O”;} }, WAITLIST{ @Override public String toString(){ return “W”;} }, COMPLETE{ @Override public String toString(){ return “C”;} } } 当我使用@Enumerated(EnumType.STRING)持久化枚举Status.OPEN ,Hibernate尝试存储在数据库中的值是OPEN。 但是,我的数据库列只包含一个字符,因此会抛出exception。 解决此问题的一种方法是将Enum类型更改为包含单个字符(如STATUS.O , STATUS.W而不是STATUS.OPEN , STATUS.WAITLIST )。 但是,这降低了可读性。 有关保持可读性以及将Enum映射到单个字符列的建议吗? 谢谢。

如何使用JAXB从XML Schema生成Java Enum?

我正在使用maven插件maven-jaxb2-plugin从XSD Schema文件生成POJO。 这很好用。 唯一让我困扰的是,xml模式枚举没有映射到Java Enum Type中。 我的maven插件是从我称为schemachooser.xsd的文件生成java pojos schemachooser.xsd : 它确实生成文件,但不生成“新”枚举类“MyEnumType”。 我使用绑定错了吗?