1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import java.util.Collection;
import org.checkerframework.checker.regex.qual.Regex;
class TypeParamSubtype {
// These are legal because null has type @Regex String
// <T extends @Regex String> void nullRegexSubtype(Collection<T> col) {
// // :: error: (argument.type.incompatible)
// col.add(null);
// }
//
// <T extends String> void nullSimpleSubtype(Collection<T> col) {
// // :: error: (argument.type.incompatible)
// col.add(null);
// }
<T extends @Regex String, U extends T> void nullRegexSubtype(Collection<T> col, U u) {
col.add(u);
}
<T extends String, U extends T> void nullSimpleSubtype(Collection<T> col, U u) {
col.add(u);
}
}
|