Thanks a lot, Richard. It is working fine now after making the changes 
suggested by you. Looks like I need to read up on Generics a bit...

Cheers, 

Martin
 

> Am 02.08.2015 um 00:09 schrieb Richard Eckart de Castilho <[email protected]>:
> 
> 
> On 01.08.2015, at 23:06, Martin Wunderlich <[email protected]> wrote:
> 
>> Yes, I think you might be right, Richard, and that the problem is with the 
>> use of Generics. 
>> 
>> This would be the concrete FE class: 
>> 
>> public class StartingPositionOfPremiseUFE<Premise> extends 
>> StartingPositionOfPropositionUFE {
>> 
>>   public static String FN_STARTINGPOSITIONOFPROPOSITION = 
>> "StartingPositionOfPremise";
>> 
>>      @Override
>>      List<Premise> getPropositions(JCas jcas, int start, int end) {
>>              return JCasUtil.selectCovered(jcas, Premise.class, start, end);
>>      }
>> }
> 
> I don't see why you would define <Premise> here on the subclass. You would 
> either define a type variable on the subclass or bind a type variable on the 
> superclass, so:
> 
> public class StartingPositionOfPremiseUFE extends 
> StartingPositionOfPropositionUFE<Premise>
> 
>> The call to selectCovered(…) gives the described error. The method 
>> getPropositions(…) is defined as abstract in the super-class, which looks 
>> like this: 
>> 
>> 
>> abstract public class StartingPositionOfPropositionUFE<T extends 
>> Proposition> extends FeatureExtractorResource_ImplBase implements 
>> ClassificationUnitFeatureExtractor{
>>      ...
>>   public List<Feature> extract(JCas jcas, TextClassificationUnit 
>> classificationUnit) {
>>      List<? extends Proposition> props = (List<? extends Proposition>) 
>> getPropositions(jcas, start, end);
> 
> Instead of <? extends Proposition>, I think you should be using <T>.
> 
>>       if( props != null && props.size() > 0) {
>>              Proposition firstProposition = props.get(0);
>>              startingPos = firstProposition.getBegin();
>>       }
>> 
>>      List<Feature> featList = new ArrayList<Feature>();
>>       featList.add(new Feature(FN_STARTINGPOSITIONOFPROPOSITION, 
>> startingPos));
>> 
>>       return featList;
>>   }
>> 
>>   abstract List<?> getPropositions(JCas jcas, int start, int end);
> 
> Again, instead of <?> I think you should be using <T>.
> 
>> }
>> 
>> I’ve removed the irrelevant bits to make it more concise. 
> 
> I still don't see why you would get that error though. 
> 
> Are you sure that "Premise.class" resolves to the right class here and not to 
> another class which accidentally has the same name?
> 
> -- Richard

Reply via email to