class A{ interface A<T>{} class MyGenericClass1<T> implements A<T>{} class MyGenericClass2<T> implements A<T>{} class MyGenericClass3<T> implements A<T>{} { A<String> a = new MyGenericClass2<String>();<caret> } }