Я хочу, чтобы возвращаемый тип param был супер как param параметра, так и param параметра param.Generic method return super type type param и method Параметр параметра param
компилируется:
import java.util.List;
interface Foo<A> {
<R, B extends R> List<R> eg1(List<B> unit);
<R> List<R> eg2(List<? extends R> unit);
}
Но не навязывает, что R должно быть супер А также. Как мне это сделать?
В сущности, я хочу сделать что-то вроде того, что выражается в них:
<B, R super A & B> List<R> func(List<B> unit);
<B> List<? super A & B> func(List<B> unit);
Но те не компилировать, конечно.
Есть две цели этой:
- Я хочу, чтобы иметь возможность присвоить результат любого супер класса А и В.
- В реализации этого метода, мне нужен результат тип, который может включать как A, так и B. Поэтому первые примеры, которые компилируются, не будут работать, потому что они не позволят мне помещать A в результат.
Если 'R' разрешено быть любым супертипом' A', а 'B' разрешено быть любым подтипом' R', то это эквивалентно простому утверждению, что 'B' разрешено быть чем угодно, R' всегда может быть «Object». Какую _actual task_ вы пытаетесь выполнить, что, по вашему мнению, нужны эти дженерики? –
@LouisWasserman Я добавил подробности к вопросу, чтобы ответить на первую часть вашего комментария. Что касается второго ... на самом деле, я должен был сначала поработать над этим. Реализация этого интерфейса приводит к проблеме, и я думаю, что это отвечает на мой вопрос. – mentics