在Java中,有没有实现接口的快捷方式?
我们可以使用存根方法来实现接口吗?i、 例如,假设我收到一条消息,说我必须实现在Java中,有没有实现接口的快捷方式?,java,interface,Java,Interface,我们可以使用存根方法来实现接口吗?i、 例如,假设我收到一条消息,说我必须实现ServletRequestAttributeListener和HttpSessionListener——我需要做什么?我可以简单地将方法签名,并使用伪值吗?是的,只要您理解这一点的主要缺点:您的类不会满足接口提供的契约。如果其他人最终使用了您的代码,这可能会是一个问题。我知道您通常谈论的是Servlet API中的XxxListener接口 如果你对这件事不感兴趣,就什么也不做。将方法主体保留为空。如有必要,
ServletRequestAttributeListener和HttpSessionListener
——我需要做什么?我可以简单地将方法签名,并使用伪值吗?是的,只要您理解这一点的主要缺点:您的类不会满足接口提供的契约。如果其他人最终使用了您的代码,这可能会是一个问题。我知道您通常谈论的是Servlet API中的XxxListener
接口
NOOP
(无操作)的注释以抑制IDE“empty body”警告
对于其他接口,这取决于它们的合同。我会阅读他们的Javadoc以确保。声明您的类摘要不会强制您实现接口的方法,但您需要在子类中实现它:
public interface bar{ public void aMethod();}
public abstract class foo implements bar{
//aMethod could be not implemented here, but in the first concrete subclass of foo
}
你应该考虑花一些时间来研究设计模式。我想你要找的是。一本探索设计模式的好书是。这本书很容易阅读,而且有一些很好的信息。为什么你要实现一个接口而不正确遵守它的合同?@monadic-好吧,在我的情况下,只是为了有一个运行的系统,然后我可以回去修复它。i、 是的,你可以创建存根方法,但是听起来好像这个类应该是抽象的。@monadic:特别是在Servlet API中,有这样的接口,比如
Filter
,ServletRequestListener
,HttpSessionListener
,然而,您不一定需要在所有方法中执行任何业务工作。例如,您可能对执行init()
或钩住创建的和销毁的事件等都不感兴趣。@Adel yes,使用该注释是!它阻止IDE为未使用的参数生成警告:)嗯,哦,这很有趣。我现在有很多值得思考的东西。
public interface bar{ public void aMethod();}
public abstract class foo implements bar{
//aMethod could be not implemented here, but in the first concrete subclass of foo
}