Ho una classe con un parametro di tipo limitato con tipi limitati con caratteri jolly nidificati. Nella classe ho bisogno di usare i tipi dei parametri annidati legati in più metodi. Esiste un modo per definire il tipo con caratteri jolly come parametro generico invece di assegnarlo a un nome di variabile generico in modo che possa essere facilmente referenziato in più punti?Tipi di jolly nidificati Java più volte o come parametro di tipo generico
Il modo in cui la classe è implementata ora è come
class AbstractManager<F extends Filter<? extends Criteria<? extends Type>>>
{
protected void setFilter(F filter)
{
setCriteria(f.getCriteria());
}
protected <T extends Criteria<? extends Type>> void setCriteria(List<T> criteria)
{
}
protected <T extends Criteria<? extends Type>> void doSomethingWithCriteria(List<T> criteria)
{
...
}
}
che non vincolato in realtà limitare il tipo di lista per il tipo di filtro, ma è abbastanza buono nella nostra situazione. Idealmente, il tipo dell'elenco sarebbe limitato al tipo del filtro utilizzando un costrutto che potrebbe associare il tipo inferito del filtro a un nome simile a un parametro di tipo limitato su un metodo, ma a livello di classe.
Fondamentalmente vorrei fare qualcosa di simile
class <G extends Criteria<? extends Type> AbstractManager<F extends Filter<G>>
Da quello che so e può trovare, questo non è possibile, ma speravo che forse c'era una caratteristica oscuro o nuova funzionalità di Java 7 che renderebbe tutto ciò possibile So che è possibile specificare un secondo parametro di tipo come
class AbstractManager<F extends Filter<G>, G extends Criteria<? extends Type>>
ma non voglio che le classi figlie di avere per specificare G quando il compilatore in grado di determinare esso.
L'unica opzione/soluzione possibile ho potuto trovare è quello di avere una sottoclasse poco profonda con metodi di fabbrica riportati nella solution a questa domanda Nested Type Parameters in Java e in Java generics - use same wildcard multiple times
Puoi fornire un esempio di quale risultato finale desideri? –