在接口中使用Java泛型来强制实现具有实现类型作为参数的方法
发布时间:2020-12-15 08:36:00 所属栏目:Java 来源:网络整理
导读:我有这样的界面: public interface DataObject { ... public void copyFrom(DataObject source); ...} 还有一个实现它的类: public class DataObjectImpl implements DataObject { ... @Override public void copyFrom(final DataObject source) {...} pub
我有这样的界面:
public interface DataObject { ... public void copyFrom(DataObject source); ... } 还有一个实现它的类: public class DataObjectImpl implements DataObject { ... @Override public void copyFrom(final DataObject source) {...} public void copyFrom(final DataObjectImpl source) {...} ... } 有没有什么办法可以使用泛型或其他方法在DataObject接口中强制执行“public void copyFrom(DataObjectImpl source)”方法? 解决方法
如果您只需要处理copyFrom,如果它给出的DataObject与对象本身的类型相同,那么只需执行以下操作:
public class DataObjectImpl implements DataObject { public void copyFrom(final DataObject source) { if (source instanceof DataObjectImpl) { ... } else { ... } } } 另一方面,你可以这样做,为采用实现类型的方法使用不同的名称.但是,我不知道这有什么用处. public interface DataObject<T extends DataObject<T>> { public void copyFrom(DataObject source); public void copyFromImpl(T source); } public class DataObjectImpl implements DataObject<DataObjectImpl> { public void copyFrom(final DataObject source) { ... } public void copyFromImpl(final DataObjectImpl source) { ... } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |