Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8301649

Compiler allows class type parameters inside super()'s static context



    • Bug
    • Status: Open
    • P4
    • Resolution: Unresolved
    • None
    • None
    • tools
    • None
    • Reproduced with:

      • javac 1.8.0_312
      • javac
      • javac 19.0.1
      • javac 21-internal (jdk-21+7-124-g9fe8e823f3a)
    • generic
    • generic


      javac accepts the following program:

      import java.util.concurrent.atomic.*;

      public class TypeParamStaticContext<T> extends AtomicReference<T> {
          public TypeParamStaticContext(Object obj) {
          public <U extends T> TypeParamStaticContext(Object obj, int x) {

      However, the references to {{T}} and {{U}} are invalid because the inside of a {{super()}} call is a static context.

      Relevant JLS sections:


      An explicit constructor invocation statement introduces a static context (§8.1.3), which limits the use of constructs that refer to the current object. Notably, the keywords this and super are prohibited in a static context (§15.8.3, §15.11.2), as are unqualified references to instance variables, instance methods, and type parameters of lexically enclosing declarations (§, §, §15.12.3).


      If a type name consists of a single Identifier, then the identifier must occur in the scope of exactly one declaration of a class, interface, or type parameter with this name (§6.3), or a compile-time error occurs.

      If the declaration denotes a type parameter of a generic class or interface C (§8.1.2, §9.1.2), then both of the following must be true, or a compile-time error occurs:

      * The type name does not occur in a static context (§8.1.3)

      * If the type name appears in a nested class or interface declaration of C, then the immediately enclosing class or interface declaration of the type name is an inner class of C.


        Issue Links



              Unassigned Unassigned
              acobbs Archie Cobbs
              0 Vote for this issue
              1 Start watching this issue