加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在接口中使用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) { ... }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读