import java.util.List; @SafeVarargs public class SafeVarargsTests { //fixed arity @SafeVarargs public void testNonVarargs1(){} @SafeVarargs public void testNonVarargs2(int i){} @SafeVarargs public void testNonVarargs3(T t){} //non static/non final @SafeVarargs public void testNonVarargs4(int... i){} //reassigned @SafeVarargs public final void testT(T[] tt, T... t) { t = tt; System.out.println(t[0]); } //incorrect types @SafeVarargs public final void testString(String... str){ } @SafeVarargs public final void testStringArray(String[]... str){ } @SafeVarargs public static void testUnbound(List... t){} //correct usages @SafeVarargs public static void foo(T... t){} @SafeVarargs public static void foo1(List... t){} @SafeVarargs public static void foo2(List... t){} }