В этом контексте:Как ссылаться на перечисление, который реализует интерфейс из общего класса
enum Traits {
TA,
TB
}
interface Intrfc {
Traits getTraits();
}
// How to add some precision about E which implements Traits?
abstract class Base<E extends Enum<E>> {
void func(E e) {
final Traits t = ((Intrfc)e).getTraits(); //<<<<< To avoid this cast?
}
}
enum X implements Intrfc {
A(Traits.TA),
B(Traits.TA),
C(Traits.TB),
;
private Traits traits;
X(Traits t) {
traits = t;
}
@Override
public Traits getTraits() {
return traits;
}
}
class Concrete extends Base<X> {
void f() {
func(X.B);
}
}
Я желаю избежать бросание объявляя E
в Base<E>
с E implements Traits
, но я не знал синтаксис для использования.
'E проходит Enum & Intrfc'. –