JDK-6500912 : Compiler fails to reject program involving method call on raw type (Constructor.getAnnotation)
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 6
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2006-12-05
  • Updated: 2010-04-02
  • Resolved: 2006-12-05
Related Reports
Duplicate :  
Description
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; }
}