I have the following method signature
public abstract class AbstractFilterParametersWithSpecificationSorting<T> extends AbstractFilterParameters
...
public void registerOrderSpecification( final String key, final Class<? extends OrderSpecification<T>> spec ) {
...
I'm passing the following
this.registerOrderSpecification(
AbstractActivityLogWithSiteUser.Index.USER_FULL_NAME,
SortActivityLogUserOrderSpecification.class );
which has this class definition
public class SortActivityLogUserOrderSpecification<AL extends AbstractActivityLogWithSiteUser<?>>
extends AbstractOrderSpecification<AL> implements OrderSpecification<AL>
here's what javac
doesn't like (IDEA thinks it should work, but IDEA is running on Java 8, and the code must compile on Java 7)
Error:(12, 21) java: method registerOrderSpecification in class com.myapp.service.principal.AbstractFilterParametersWithSpecificationSorting<T> cannot be applied to given types;
required: java.lang.String,java.lang.Class<? extends com.myapp.specification.OrderSpecification<AL>>
found: java.lang.String,java.lang.Class<com.myapp.repository.activitylog.specification.SortActivityLogUserOrderSpecification>
reason: actual argument java.lang.Class<com.myapp.repository.activitylog.specification.SortActivityLogUserOrderSpecification> cannot be converted to java.lang.Class<? extends com.myapp.specification.OrderSpecification<AL>> by method invocation conversion
can I cast it? or am I missing some question mark somewhere?