假设我有这两个界面...
public interface ObjectInterface { /* empty interface */ }
public interface ObjectHandler
{
void handle(ObjectInterface object);
}
...还有一个实现ObjectInterface的具体类:
public class ConcreteObject implements ObjectInterface { /* ... */ }
为什么在Java中不允许这样做?
public class ConcreteHandler implements ObjectHandler
{
@Override
public void handle(ConcreteObject object) // <-- ObjectInterface implementation
{
// ...
}
}
毕竟,
ConcreteObject
实现ObjectInterface
接口。但是,有没有一种方法可以用Java设计我的类来保持这种抽象模式呢?
最佳答案
您可以使用可接受的ObjectHandler
的类来参数化ObjectInterface
:
public interface ObjectHandler<T extends ObjectInterface>
{
void handle(T object);
}
并如下使用它:
public class ConcreteHandler implements ObjectHandler<ConcreteObject>
{
@Override
public void handle(ConcreteObject object) // <-- now this works
{
// ...
}
}