java - How can pass my class to the generic specification of the class? -


i have 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 following

    this.registerorderspecification(             abstractactivitylogwithsiteuser.index.user_full_name,             sortactivityloguserorderspecification.class ); 

which has class definition

public class sortactivityloguserorderspecification<al extends abstractactivitylogwithsiteuser<?>>     extends abstractorderspecification<al> implements orderspecification<al> 

here's javac doesn't (idea thinks should work, idea running on java 8, , code must compile on java 7)

error:(12, 21) java: method registerorderspecification in class com.myapp.service.principal.abstractfilterparameterswithspecificationsorting<t> cannot applied 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 converted java.lang.class<? extends com.myapp.specification.orderspecification<al>> method invocation conversion 

can cast it? or missing question mark somewhere?

i tried code , started simplifying smaller example showed same problem. got (much simpler) code:

abstract class mylist<t> implements java.util.list<t> { }  public class testgenerics2<t> {      public void processlistclass(final class<? extends java.util.list<t>> spec ) {     }      public void tryit() {         this.processlistclass(mylist.class);     }  } 

generates error:

testgenerics2.java:11: processlistclass(java.lang.class<? extends java.util.list<t>>) in testgenerics2<t> cannot applied (java.lang.class<mylist>) 

i think should cast (or refactor code don't need generic's complexity).

like jon skeet once said:

sometimes java generics doesn't let want to, , need tell compiler you're doing legal @ execution time.


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -