The compiler fails to reject this program:
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
public class X {
void bar(Constructor constructor, Class<Ann> ann) {
constructor.getAnnotation(ann).message(); // Should fail
}
}
@interface Ann {
String message();
}
class Y {
void bar(MyConstructor constructor, Class<Ann> ann) {
constructor.getAnnotation(ann).message(); // Should fail
}
}
interface Z {
<T extends Annotation> T getAnnotation(Class<T> c);
}
class MyAccessibleObject implements Z {
public <T extends Annotation> T getAnnotation(Class<T> c) { return null; }
}
class MyConstructor<V> extends MyAccessibleObject {
public <T extends Annotation> T getAnnotation(Class<T> c) { return null; }
}
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
public class X {
void bar(Constructor constructor, Class<Ann> ann) {
constructor.getAnnotation(ann).message(); // Should fail
}
}
@interface Ann {
String message();
}
class Y {
void bar(MyConstructor constructor, Class<Ann> ann) {
constructor.getAnnotation(ann).message(); // Should fail
}
}
interface Z {
<T extends Annotation> T getAnnotation(Class<T> c);
}
class MyAccessibleObject implements Z {
public <T extends Annotation> T getAnnotation(Class<T> c) { return null; }
}
class MyConstructor<V> extends MyAccessibleObject {
public <T extends Annotation> T getAnnotation(Class<T> c) { return null; }
}
- duplicates
-
JDK-6400189 raw types and inference
-
- Closed
-