Я возвращаю пустые наборы по сравнению с пустым указателем, когда это возможно. Я переключаюсь между двумя методами для того, чтобы сделать настолько использующий java.util. Наборы:
return Collections.EMPTY_LIST;
return Collections.emptyList();
где emptyList()
как предполагается, безопасен с точки зрения типов. Но я недавно обнаружил:
return Collections. emptyList();
return Collections. singletonList(new ComplexObject());
и т.д.
Я вижу этот метод в Проводнике пакетов Eclipse:
() : void
но я не вижу, как это сделано в исходном коде (1.5). Как это волшебство tomfoolerie случай!!
Править: Как статический Универсальный тип выполняется?
EDIT: Как статический тип Generic реализован?
http://www.docjar.com/html/api/java/util/Collections.java.html
public class Collections {
...
public static final List EMPTY_LIST = new EmptyList<Object>();
...
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
...
}
Вы можете посмотреть ссылку на реализацию класса EmptyList, если вам интересно, но для вашего вопроса это не имеет значения.
return Collections.<ComplexObject> emptyList();
Использование этого позволит избавиться от предупреждений Eclipse о неуниверсальных коллекциях.
При этом типизированный пустой список будет функционально идентичен нетипизированному пустому списку из-за того, что пустой список неизменен, а Java стирает общие типы во время компиляции.
- это имя метод, в который во время компиляции собирается код инициализации класса.(То есть весь код внутри static {}
блоков и инициализаторы статических членов в порядке исходного кода.)
Это не имеет ничего общего с явными параметрами типа в вызовах методов.
- статический блок инициализатора. Это блок кода, который выполняется ровно один раз (при загрузке класса).
Итак, вместо
class A {
static int x = 5;
}
можно написать:
class A {
static int x;
static { // static initializer starts
x = 5;
}
}
Эти два класса эквивалентны. Внутри блока статического инициализатора можно разместить произвольный код и, таким образом, инициализировать статические поля результатами сложных вычислений.