Почему эта программа больше не собирается в Java 8 с «не может вывести аргументы типа»?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему эта программа больше не собирается в Java 8 с «не может вывести аргументы типа»?

Сообщение Anonymous »

Эта программа компилируется в Java 7 (или в Java 8 с -Source 7 ), но не может компилироваться с Java 8:
interface Iface {}
class Impl implements Iface {}

class Acceptor {
public Acceptor(T obj) {}
}

public class Main {
public static void main(String[] args) {
Acceptor acceptor = new Acceptor(new Impl());
}
}
< /code>
Результат: < /p>
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,Iface
where T is a type-variable:
T extends Iface declared in class Acceptor
where CAP#1 is a fresh type-variable:
CAP#1 extends Iface from capture of ?
1 error

Другими словами, это несовместимость в обратном порядке источника между Java 7 и 8. Я прошел несовместимость между списком Java SE 8 и Java SE 7, но не нашел ничего, что соответствовало бы моей проблеме.
Так это ошибка? Class = "Lang-None PrettyPrint-Override">$ /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)


Подробнее здесь: https://stackoverflow.com/questions/230 ... ype-argume

Вернуться в «JAVA»