java – 覆盖方法然后面临问题
发布时间:2020-12-15 04:49:53 所属栏目:Java 来源:网络整理
导读:当覆盖方法然后面临一个问题: public interface IProduct { public void sendMessage(Object object);}@Servicepublic class ProductManagere implements IProduct{ @Override public void sendMessage(Product product) { // Added logic }} 但要低于例外
当覆盖方法然后面临一个问题:
public interface IProduct { public void sendMessage(Object object); } @Service public class ProductManagere implements IProduct{ @Override public void sendMessage(Product product) { // Added logic } } 但要低于例外:
我不明白为什么抛出这个例外.我希望product是Object的子类型,所以它不会抛出异常. 解决方法
在Java中,覆盖不允许参数的协方差.
它只能用于返回类型. 为什么? 因为更改子类中方法的参数类型不是为了覆盖方法而是为了重载它.这不是你的意图. 因此,您必须将Object作为参数保留在子类中(可能不是您想要的)或使接口成为通用接口,例如: public interface IProduct<T> { void sendMessage(T object); } 而子类: @Service public class ProductManagere implements IProduct<Product>{ @Override public void sendMessage(Product product) { // Added logic } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |