import java.util.*; class Base { public void method(Base base) { } public void method1(Base> base) { } public Base foo() { return null; } public Base bar() { return null; } public Base> far() { return null; } } class Derived extends Base { public void method(Base base) { } public Base foo() { return null; } public Base bar() { return null; } } class Derived1 extends Base { public void method1(Base base) { } public Base far() { return null; } // Acceptable construct as of JDK 1.5 beta 2 may 2004 } class X { public void foo () {} } class YY extends X { public void foo() {} } interface List { public T[] toArray(T[] ts); } class AbstractList { public T[] toArray(T[] ts) {return null;} } //Signatures from List and AbstractList are equal class ArrayList extends AbstractList implements List {} //SCR 39485: the following overriding is OK abstract class Doer { abstract void go(X x); } class MyList extends Doer { X x; void go(Y y) {} } class MyListRaw extends MyList { } //See IDEADEV-1125 //The following two classes are OK class A1 { void foo(T t) {} } class A2 extends A1 { void foo(Object o) {} } //While these are not class A3 { void foo(Object o) {} } class A4 extends A3 { void foo(T t) {} } //This sibling override is OK class A5 { public void foo(Object o) {} } interface I1 { void foo(T t); } class A6 extends A5 implements I1 {} //While this is not class A7 { public void foo(T t) {} } interface I2 { public void foo(Object o); } class A8 extends A7 implements I2 {} //IDEA-9321 abstract class MyMap implements java.util.Map { public Object put(K key, V value) { return null; } } //end of IDEA-9321 abstract class AA { abstract void foo(T t); } abstract class BB extends AA { void foo(BB b) {} } class CC extends BB { //foo is correctly seen from BB } class QQQ {} abstract class GrandParent { public abstract void paint(T object); } class Parent extends GrandParent { public void paint(T component) { } } // this overriding should be OK class Child2 extends Parent { } class IDEA16494 { class Base { public List elements() { return null; } } class Derived extends Base { } class MostDerived extends Derived { public List elements() { return null; } } } class IDEA16494Original { class Base { public List elements() { return null; } } class Derived extends Base { } class MostDerived extends Derived { public List elements() { return null; } } } class IDEADEV23176Example { public abstract class AbstractBase extends AbstractParent implements Interface { } public abstract class AbstractParent { public void Implemented(Collection c) { } public abstract void mustImplement(); } public class Baseclass extends AbstractBase implements Interface { public void mustImplement() { } } public interface Interface { void Implemented(Collection c); } } /** @noinspection UnusedDeclaration*/ class IDEADEV26185 { public static abstract class SuperAbstract { public abstract Object foo(Type other); } public static abstract class HalfGenericSuper extends SuperAbstract { public abstract Object foo(String other); } public static abstract class AbstractImpl extends HalfGenericSuper { public Object foo(String other) { return null; } } public static class Concrete extends AbstractImpl { } } class ideadev30090 { abstract class MyBeanContext implements MyListInterface/**/ { public Object get(int index) { return null; } } interface MyListInterface extends List { } interface MyListMember { void f(); } } ////////////////////////////////////////// class IDEADEV32421 { interface InterfaceWithFoo { Class foo(); } class ParentWithFoo implements InterfaceWithFoo { public Class foo() { return null; } } class TestII extends ParentWithFoo implements InterfaceWithFoo { } } class IDEADEV32421_TheOtherWay { interface InterfaceWithFoo { Class foo(); } class ParentWithFoo implements InterfaceWithFoo { public Class foo() { return null; } } class TestII extends ParentWithFoo implements InterfaceWithFoo { } } ////////////////////////////////////// class SBBug { abstract class A implements Comparable> {} class B extends A { public int compareTo(Object o) { return 0; } } } class SBBug2 { abstract class A implements Comparable> {} class B extends A { public int compareTo(A o) { return 0; } } }