| class D implements I<I>{ |
| } |
| class DT<T> implements I<T>{ |
| } |
| |
| interface I <T> { |
| } |
| |
| <error descr="'I' cannot be inherited with different type arguments: 'I' and 'D'">class CCC extends D implements I<D></error> { |
| } |
| abstract class CCC2<T> extends DT<T> implements I<T> { |
| } |
| |
| class a extends b<d, c> implements c<d, c<c,c>>, d<b<c<c,c>,d>> {} |
| class b<K,V> implements c<K, c<V,V>> { } |
| interface c<K,V> extends d<b<V,K>> {} |
| interface d<K> {} |
| |
| // extending final classes in bounds |
| class C<T extends String> { |
| <E extends Integer> void f() {} |
| } |
| |
| class GenericExtendItself<T, U extends T> |
| { |
| GenericExtendItself<Object,Object> foo; |
| } |
| |
| |
| //////////////////// |
| abstract class ZZZZ<E> { |
| public abstract E getElement(); |
| } |
| abstract class Z<E> extends ZZZZ<E> {} |
| class Z2 extends Z<Integer> { |
| public Integer getElement() { |
| return null; |
| } |
| } |
| ///////////////// |
| class BaseC <E> { |
| E remove(){ |
| return null; |
| } |
| } |
| |
| class DerivedC extends BaseC<String> { |
| public String remove() { |
| String s = super.remove(); |
| return null; |
| } |
| } |
| |
| /// raw in the multiple supers |
| interface Int<T> { |
| AClass<T> f(); |
| } |
| abstract class AClass<T> implements Int<T> { |
| public abstract AClass<T> f(); |
| } |
| |
| class MyClass extends AClass implements Int{ |
| public AClass f() { |
| return null; |
| } |
| } |
| |
| class A<T>{ |
| A(){} |
| A(T t){} |
| |
| { |
| new A<A>(new A()){}; |
| } |
| } |
| |
| //IDEADEV-4733: this overriding is OK |
| class Outer<T> |
| { |
| public class Inner |
| { |
| private final T t; |
| |
| public Inner(T t) { this.t = t; } |
| |
| public T getT() { return t; } |
| |
| public String toString() { return t.toString(); } |
| } |
| } |
| |
| class Other extends Outer<String> |
| { |
| public class Ither extends Outer<String>.Inner |
| { |
| public Ither() |
| { |
| super("hello"); //valid super constructor call |
| } |
| } |
| } |
| |
| //end of //IDEADEV-4733 |
| interface AI { |
| } |
| interface BI { |
| } |
| abstract class AbstractClass<T> { |
| AbstractClass(Class<T> clazz) { |
| } |
| } |
| class ConcreteClass extends AbstractClass<AI> { |
| ConcreteClass() { |
| super(AI.class); |
| } |
| class InnerClass extends AbstractClass<BI> { |
| InnerClass() { |
| super(BI.class); // |
| } |
| } |
| } |
| /////////////////////// |