Я помню декларацию что-то вроде следующего:Что такое поведение по умолчанию оператора алмазного
private static Logger log = Logger.getLogger(<>.class);
Преимущество в том, что он может быть вставлен из класса в класс, не случайно является регистратором для другого класс.
Теперь я не могу это скомпилировать, синтаксис должен быть неправильным. Итак, что именно делает <> решить самостоятельно (не ArrayList <>() и т. Д.)?
Спасибо
Обновление:
Мое утверждение, что он является законным синтаксис происходит от:
- Я видел его на веб-сайте в качестве юридического и изящным трюком.
- И я, и его коллега вставляли его в IntelliJ с Java 7, и он скомпилирован правильно.
Это не работает, я не могу найти поиск, который снова приведет меня к этой странице, и я не могу его скомпилировать сейчас! Поэтому я надеюсь, что кто-то, кто обладает знаниями о компиляторе или Java, может окончательно сказать, действительно ли он действителен и каков он по умолчанию.
Ничего. Это синтаксически неверно. –
Насколько я знаю, '<>. Class' не является и никогда не был законным. Оператор алмаза (представленный на Java 7) используется только в вашем последнем примере ('new ArrayList <>()'), чтобы указать, что должны быть выведены параметры типового типа для вызовов конструктора.(Отсутствие оператора алмаза указывает на построение необработанного типа.) –
Я думаю, что некоторые IDE могут скрыть тип с этим синтаксисом, но он все еще на самом деле там? –