|
Spec-Zone .ru
спецификации, руководства, описания, API
|
@Documented @Retention(value=RUNTIME) @Target(value={CONSTRUCTOR,METHOD}) public @interface SafeVarargs
В дополнение к ограничениям использования, введенным @Target метааннотация, компиляторы обязаны реализовывать дополнительные ограничения использования на этот тип аннотации; это - ошибка времени компиляции, если объявление метода или конструктора аннотируется a @SafeVarargs аннотация, и также:
static ни final. Компиляторы поощряются выпустить предупреждения, когда этот тип аннотации применяется к методу или объявлению конструктора где:
Object, и String. (Предупреждения непроверенные, которые этот тип аннотации подавляет уже, не происходят для reifiable типа элемента.)
@SafeVarargs // Not actually safe!
static void m(List<String>... stringLists) {
Object[] array = stringLists;
List<Integer> tmpList = Arrays.asList(42);
array[0] = tmpList; // Semantically invalid, but compiles without warnings
String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
}
приводит к a ClassCastException во времени выполнения. Будущие версии платформы могут передать под мандат ошибки компилятора для таких опасных операций.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92