Изменение компилятора в Java 7JAVA

Программисты JAVA общаются здесь
Anonymous
Изменение компилятора в Java 7

Сообщение Anonymous »

В Java 6 я смог использовать:

Код: Выделить всё

public static  T getCountrySpecificComponent(UK uk, US us) {
Country country = CountryContext.getCountry();
if (country == Country.US) {
return us;
} else if (country == Country.UK) {
return uk;
} else {
throw new IllegalStateException("Unhandled country returned: "+country);
}
}
С помощью этих репозиториев:

Код: Выделить всё

public interface Repository{
List findAll();
}

public interface RepositoryUS extends Repository{}

public interface RepositoryUK extends Repository{}
При их использовании:

Код: Выделить всё

RepositoryUK uk = ...
RepositoryUS us = ...
Эта строка компилируется в Java6, но завершается с ошибкой в ​​Java7 (ошибка: невозможно найти символ — компилятор ищет findAll() в классе Object)

Код: Выделить всё

List users = getCountrySpecificComponent(uk, us).findAll();
Это компилируется в Java 7

Код: Выделить всё

List users = ((Repository)getCountrySpecificComponent(uk, us)).findAll();
Я знаю, что это довольно необычный вариант использования, но есть ли причина для такого изменения? Или способ сказать компилятору, чтобы он был немного «умнее»?

Подробнее здесь: https://stackoverflow.com/questions/107 ... -in-java-7

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