![](/img/trans.png)
[英]Perform JPA query with LIKE operator on entity with enum (EnumType.STRING)
[英]Difference between declare variable as Enum<EnumType> and EnumType
我从java.sql.SQLException中得到了启发:枚举的第1行的“ gender”列的数据被截断了 。
我有这个枚举
public enum MyEnum {
Value1,
Value2;
}
和此示例代码:
MyEnum raw = MyEnum.Value1;
Enum<MyEnum> wrapped = MyEnum.Value1;
System.out.println(raw);
System.out.println(wrapped);
System.out.println(raw.getDeclaringClass());
System.out.println(wrapped.getDeclaringClass());
System.out.println(Arrays.toString(raw.values()));
System.out.println(wrapped.values());
System.out.println(raw.equals(wrapped));
System.out.println(wrapped.equals(raw));
而对于
Enum<MyEnum>
不确定。 为了使其正常工作,我将演员表放置为System.out.println(((MyEnum) wrapped).values());
true
true
沉迷于调试器中,变量共享是相同的对象(相同的对象ID)。
两种类型的声明有哪些区别?
区别很简单:与两者之间的区别相同
String foo="bla";
和
Object foo="bla";
Enum<MyEnum>
是超类MyEnum
。 因此,在使用超类时,可以使用已经在超类中定义的方法,但是如果没有类型转换,则无法在特定子类中定义的方法。 调用已在特定enum
类中重写的实例方法时,将像在Java中一样调用子类方法。
使用Enum<MyEnum>
没有多大意义。 但是,使用E extends Enum<E>
是通用代码使用的结构,能够处理任意enum
s。 就像EnumMap
或EnumSet
。
两种类型的声明有哪些区别?
MyEnum extends Enum<MyEnum>
因此对象将完全相同,只是引用的类型不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.