The designation <T extends C & I>means that it Tis a type parameter. This means that when someone calls a function, they must indicate this type. The only limitation is that the type extends Cand I. Ais one of these types, but I could create a new class that also extends Cand I. Like this example:
class B extends C implements I {}
Foo foo = new Foo();
B b = foo.<B>getComposition();
, , A B.
A, A. :
public class Foo {
public A getComposition() {
return new A();
}
}