Spec-Zone .ru
спецификации, руководства, описания, API
|
@Documented @Retention(value=RUNTIME) @Target(value={CONSTRUCTOR,METHOD}) public @interface SafeVarargs
В дополнение к ограничениям использования, введенным @Target
метааннотация, компиляторы обязаны реализовывать дополнительные ограничения использования на этот тип аннотации; это - ошибка времени компиляции, если объявление метода или конструктора аннотируется a @SafeVarargs
аннотация, и также:
static
ни final
. Компиляторы поощряются выпустить предупреждения, когда этот тип аннотации применяется к методу или объявлению конструктора где:
Object
, и String
. (Предупреждения непроверенные, которые этот тип аннотации подавляет уже, не происходят для reifiable типа элемента.) приводит к a@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! }
ClassCastException
во время выполнения. Будущие версии платформы могут передать под мандат ошибки компилятора для таких опасных операций.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.