A user had written this: public static <T extends Annotation> Iterator<T> annotationsIterator( JCas aJCas, int type) { return aJCas.getAnnotationIndex(type).iterator(); // fails, cannot convert from FSIterator<AnnotationFS> to Iterator<T> }
This compile-time error can be eliminated by changing the generification of AnnotationIndex as follows: Currently AnnotationIndex is defined: public interface AnnotationIndex extends FSIndex<AnnotationFS> If the definition is changed to: public interface AnnotationIndex <T extends AnnotationBaseFS> extends FSIndex<T> then the user's code above no longer gives a compile-time error. (It does give a warning though - an unchecked conversion is needed). This change makes AnnotationIndex, itself, a generic type, with a type parameter indicating the type the index is over. Is this a correct improvement? -Marshall