Warum kompiliert dieses Java 8-Programm nicht?

Dieses Programm kompiliert einwandfrei in Java 7 (oder in Java 8 mit-source 7), kann aber mit Java 8 nicht kompiliert werden:

interface Iface<T> {}
class Impl implements Iface<Impl> {}

class Acceptor<T extends Iface<T>> {
    public Acceptor(T obj) {}
}

public class Main {
    public static void main(String[] args) {
        Acceptor<?> acceptor = new Acceptor<>(new Impl());
    }
}

Ergebnis:

Main.java:10: error: incompatible types: cannot infer type arguments for Acceptor<>
        Acceptor<?> acceptor = new Acceptor<>(new Impl());
                                           ^
    reason: inference variable T has incompatible bounds
      equality constraints: Impl
      upper bounds: Iface<CAP#1>,Iface<T>
  where T is a type-variable:
    T extends Iface<T> declared in class Acceptor
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Iface<CAP#1> from capture of ?
1 error

Mit anderen Worten ist dies einrückwärts Quell-Inkompatibilität zwischen Java 7 und 8. Ich habe durchgemachtInkompatibilitäten zwischen Java SE 8 und Java SE 7 liste aber habe nichts gefunden was zu meinem problem passen würde.

Also, ist das ein Bug?

Umgebung:

$ /usr/lib/jvm/java-8-oracle/bin/java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage