Luke Hutchison
2018-10-19 23:09:13 UTC
In JLS section 4.1 ("The ClassFile structure") for SE 11, it states:
super_class
For a class, the value of the super_class item either must be zero or must
be a valid index into the constant_pool table. If the value of the
super_class item is nonzero, the constant_pool entry at that index must be
a CONSTANT_Class_info structure representing the direct superclass of the
class defined by this class file. Neither the direct superclass nor any of
its superclasses may have the ACC_FINAL flag set in the access_flags item
of its ClassFile structure.
If the value of the super_class item is zero, then this class file must
represent the class Object, the only class or interface without a direct
superclass.
This is incorrect -- the value of super_class is also zero for
module-info.class files.
super_class
For a class, the value of the super_class item either must be zero or must
be a valid index into the constant_pool table. If the value of the
super_class item is nonzero, the constant_pool entry at that index must be
a CONSTANT_Class_info structure representing the direct superclass of the
class defined by this class file. Neither the direct superclass nor any of
its superclasses may have the ACC_FINAL flag set in the access_flags item
of its ClassFile structure.
If the value of the super_class item is zero, then this class file must
represent the class Object, the only class or interface without a direct
superclass.
This is incorrect -- the value of super_class is also zero for
module-info.class files.