多くの質問で述べられているように、同じメソッドを持つ2つのインターフェースを1つのクラスで継承することはできないといつも思っていました。
Java jre 7、jdk 1.7
しかし、ここのこのコードは機能しています。
例:
インターフェース:
public interface IObject
{
public Object create(Object object) throws ExceptionInherit;
}
public interface IGeneric<T>
{
public T create(T t) throws ExceptionSuper;
}
クラスの実装:
public class Test implements IGeneric<Object>, IObject
{
@Override
public Object create(final Object object) throws ExceptionInherit
{
return object;
}
}
これらの2つのメソッド宣言は同じ本体を持っていませんか?
例外:
例外は、この構成に追加するだけであり、より複雑になります。
public class ExceptionSuper extends Exception {}
public class ExceptionInherit extends ExceptionSuper {}
スローされた例外なしでも機能します。
さらに:両方のメソッドインターフェイスが異なる継承例外をスローする場合UserLogic
、2つのインターフェイスのいずれかにキャストして、例外の異なるサブセットを取得できます。
なぜこれが機能しているのですか?
編集:
The generic implementation is not even necessary:
public interface IA
{
public void print(String arg);
}
public interface IB
{
public void print(String arg);
}
public class Test implements IA, IB
{
@Override
public void print(String arg);
{
// print arg
}
}