blob: 031e88c52b905c60e631644cf2d9c71e98999ebc [file] [log] [blame]
import java.lang.annotation.Annotation;
import java.lang.reflect.*;
import org.checkerframework.checker.regex.qual.Regex;
public class AnnotatedTypeParams3 {
private <T extends Annotation> T safeGetAnnotation(Field f, Class<T> annotationClass) {
T annotation;
try {
annotation = f.getAnnotation((Class<T>) annotationClass);
} catch (Exception e) {
annotation = null;
}
return annotation;
}
private <T extends Annotation> T safeGetAnnotation2(Field f, Class<T> annotationClass) {
T annotation;
try {
annotation = f.getAnnotation(annotationClass);
} catch (Exception e) {
annotation = null;
}
return annotation;
}
<@Regex T extends @Regex Object> void test(T p) {
Object o = p;
@Regex Object re = o;
}
<T extends @Regex Object> void test2(T p) {
Object o = p;
@Regex Object re = o;
}
// TODO: do we want to infer the type variable annotation on local variable "o"?
<T> void test3(@Regex T p) {
T o = p;
@Regex T re = o;
}
}
class OuterClass<E> {
public InnerClass<E> method() {
return new InnerClass<>();
}
class InnerClass<A extends E> {}
}