|
FlexDoc/Javadoc 2.0 Demo Java Doc |
({CONSTRUCTOR,METHOD}) |
In addition to the usage restrictions imposed by its @Target meta-annotation, compilers are required to implement additional usage restrictions on this annotation type; it is a compile-time error if a method or constructor declaration is annotated with a @SafeVarargs annotation, and either:
Compilers are encouraged to issue warnings when this annotation type is applied to a method or constructor declaration where:
leads to a ClassCastException at runtime.@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! }
Future versions of the platform may mandate compiler errors for such unsafe operations.
|
FlexDoc/Javadoc 2.0 Demo Java Doc |