Mam klasę z ograniczonym typem parametru z zagnieżdżonymi typami ograniczonymi ze znakami wieloznacznymi. W klasie potrzebuję użyć typów związanych parametrów zagnieżdżonych w wielu metodach. Czy istnieje sposób na zdefiniowanie typu ograniczonego z symbolami wieloznacznymi zamiast ogólnego parametru typu lub przypisanie go do nazwy zmiennej ogólnej, aby można było z łatwością odwoływać się do wielu miejsc?Jawne symbole wieloznaczne zagnieżdżone wieloetapowo lub jako parametr ogólny parametr
Sposób klasa jest teraz realizowany jest jak
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)
{
...
}
}
który nie wiąże faktycznie ograniczają rodzaj listy do rodzaju filtr, ale jest wystarczająco dobre w naszej sytuacji. Idealnie typ listy byłby ograniczony do typu filtru przy użyciu konstrukcji, która mogłaby powiązać wywodzący się typ filtra z nazwą bardzo podobną do ograniczonego parametru typu w metodzie, ale na poziomie klasy.
Zasadniczo chciałbym zrobić coś takiego
class <G extends Criteria<? extends Type> AbstractManager<F extends Filter<G>>
Z tego, co wiem, a może znaleźć, to nie jest możliwe, ale miałem nadzieję, że może nie było niejasne funkcja lub nowa funkcja w Java 7, które umożliwiłoby to. wiem, że to jest możliwe, aby określić drugi parametr typu jak
class AbstractManager<F extends Filter<G>, G extends Criteria<? extends Type>>
ale nie chcę zajęcia dziecko musiał określić G gdy kompilator można go określić.
Jedynym możliwym rozwiązaniem/rozwiązanie udało mi się znaleźć jest mieć płytkie podklasę z metod fabrycznych podanych w solution na to pytanie Nested Type Parameters in Java iw Java generics - use same wildcard multiple times
Czy możesz podać próbkę tego, czego pożądasz? –