怎么纠正?—“都定义了getObjectCopy(),但返回类型不相关” —但它是* one *函数

怎么纠正?—“都定义了getObjectCopy(),但返回类型不相关” —但它是* one *函数,第1张

怎么纠正?—“都定义了getObjectCopy(),但返回类型不相关” —但它是* one *函数

假设所有返回值

Copyable
都为extension,则所有版本的getObjectCopy()返回Copyable。例如:

public interface Validatevalue<O> extends Copyable{     // Other functions...     @Override     Copyable getObjectCopy();}public Blammy implements Validatevalue<String>{    // Other functions...     @Override    public Copyable getObjectCopy()    {        SomethingThatExtendsCopyable blammy = new SomethingThatExtendsCopyable();        return (Copyable)blammy;    }}
编辑

在上面的代码中,错误是由以下事实引起的:“
getObjectCopy”方法在

Validatevalue<String>
ValidLineGettable
接口中具有不同的返回值,但调用签名相同。在Java中,仅通过更改返回值就不会获得多态。这会导致编译错误。

如果将返回值更改为,

Copyable
TextLinevalidator
不再通过扩展其两个父接口来获得值。一种更简单的方法是拥有一个接口(可复制)和实现该接口的多个类,每个类都返回一个可复制值,该值可以是扩展(或实现)可复制类的实例。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5498763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存