因为枚举数量小于等于64和大于64 利用EnumSet.noneOf产生的类不同,源码如下:
public static> EnumSet noneOf(Class elementType) { Enum[] universe = getUniverse(elementType); if (universe == null) throw new ClassCastException(elementType + " not an enum"); if (universe.length <= 64) return new RegularEnumSet<>(elementType, universe); else return new JumboEnumSet<>(elementType, universe); }
RegularEnumSet是数字类型的操作,JumboEnumSet是数组操作
RegularEnumSet(Class2.JAVA的泛型编译类型擦除的elementType, Enum[] universe) { super(elementType, universe); } EnumSet(Class elementType, Enum[] universe) { this.elementType = elementType; this.universe = universe; } JumboEnumSet(Class elementType, Enum[] universe) { super(elementType, universe); elements = new long[(universe.length + 63) >>> 6]; }
所以一下代码会报错
public void listMethon(ListarrString) { } public void listMethon(List arrString) { }
ListstringList = new ArrayList (); List integerList = new ArrayList (); System.out.println("是否相等"+(stringList.getClass() == integerList.getClass()));
打印结果:是否相等true
instanceof不允许存在泛型参数
System.out.println(stringList instanceof List); 这句会编译报错



