ジェネリックの使用。
public interface Inter<T> {
T someMethod();
void someMethod2(T obj);
}
public class C1 implements Inter<C1> {
public C1 someMethod() {
// ..
}
public void someMethod2(C1 obj) {
// ..
}
}
public class C2 implements Inter<C2> {
public C2 someMethod() {
// ..
}
public void someMethod2(C2 obj) {
// ..
}
}
参照:
ジェネリック型 (Java™ チュートリアル > ジェネリック)
編集:(OPのコメントに応じて、境界付きジェネリック型を使用)
public interface Inter<T extends Inter<T>> {
T someMethod();
void someMethod2(T obj);
}
public class C1 implements Inter<C1> {
public C1 someMethod() {
return new C1();
}
public void someMethod2(C1 obj) {
// ..
}
}
public class C2 implements Inter<C3> { // ERROR
..
}
しかし、ここで問題が発生します。
public class C2 implements Inter<C1> { // COMPILES!
..
}
C1も満たすからT extends Inter<T>です。これは私が信じることができる限りです。
参照:
境界型パラメーター (Java™ チュートリアル > ジェネリック)