java - Reflection finding method with Generic Type withing Parameterized Class -
i have class following signature:
public class multiplesorting<t extends enum<?>> { private class<t> criteriatype; private t selectedcriteria; public multiplesorting(class<t> criteriatype) { super(); this.criteriatype = criteriatype; } public void setselectedcriteria(t selectedcriteria) { this.selectedcriteria = selectedcriteria; } public t getselectedcriteria() { return selectedcriteria; } public class<t> getcriteriatype(){ return criteriatype; } public void setcriteriatype(class<t> criteriatype){ this.criteriatype = criteriatype; } } i instantiating new multiplesorting(articlesortfield.class);. here articlesortfield enum. method within multiplesorting when trying method setselectedcriteria through reflection as:
method setselectedcriteriamethod = getclass().getdeclaredmethod("setselectedcriteria",getcriteriatype()); the setselectedcriteriamethod returning null. after debugging found getcriteriatype() returning class articledortfield argument type of setselectedcriteria method enum, why reflection returning null.
also if change signature of multiplesorting public class multiplesorting<t> t of setselectedcriteria becoming object.
- how can fix issue?
- is happening due type erasure? thought
treplacedarticledortfield. couldn't understand why behaving this. how type erasure works? replace generic type concrete implementation?
any pointer helpful me.
a possible fix issue might "setselectedcriteria" method calling getclass().getdeclaredmethod(...) desired type, super type, , walking class hierarchy until found matching method. it's not beautiful solution might trick.
and yes, caused type erasure. once code compiled, there no <t> object, there no <t extends enum<?>> enum. type safety checked compiler, not enforced jvm.
Comments
Post a Comment