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 extends T>... t){}
}
abstract class AClass {
@SafeVarargs
AClass(T... d){
System.out.println(d);
}
}
class ABClass extends AClass {
@SafeVarargs
ABClass(T... d){
super(d);
}
}