我一直认为具有相同方法的两个接口不能被一个类继承,正如许多问题中所述。
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;
}
}
这两个方法声明不是具有相同的主体吗?
例外:
例外只是对这个结构的补充,使它更复杂。
public class ExceptionSuper extends Exception {}
public class ExceptionInherit extends ExceptionSuper {}
它也可以在没有任何抛出异常的情况下工作。
进一步:如果两个方法接口抛出不同的继承异常,我可以强制UserLogic
转换为两个接口中的任何一个并检索异常的不同子集!
为什么这行得通?
编辑:
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
}
}