@Documented @Retention(value=RUNTIME) @Target(value={CONSTRUCTOR,METHOD}) public @interface SafeVarargs
 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:
 
static nor final.
 Compilers are encouraged to issue warnings when this annotation type is applied to a method or constructor declaration where:
Object, and String.
 (The unchecked warnings this annotation type suppresses already do
 not occur for a reifiable element type.)
 
 @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 at runtime.
 Future versions of the platform may mandate compiler errors for such unsafe operations.
 Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2015, Oracle and/or its affiliates.  All rights reserved.