相关疑难解决方法(0)

为什么Java中的逆变参数类型不允许覆盖?

覆盖超类的方法时,Java允许返回类型是协变的.

为什么相比之下逆变参数类型覆盖方法允许吗?

java overriding covariance contravariance

17
推荐指数
1
解决办法
4878
查看次数

Java - 用具体类型覆盖对象类型参数

编辑:我将在此留下这个例子.阅读评论以获取更多信息,但一般情况下:请勿使用此设计!这不好!

我现在搜索了一段时间的答案,但找不到任何真正具体的说法,不,你不能因为...或者是的,你可以这就是你做的.

所以问题是,我可以创建一个定义Object类型参数的抽象方法,然后使用具体的参数类型实现它,如下所示:

public abstract class ToBeOverriden {
    public Object method1 (Object parameter);
    public String method2 (Object parameter);
    public void method3 (Object parameter);
}
Run Code Online (Sandbox Code Playgroud)

然后用这个覆盖它:

public class Implementation {
    @Override
    public DateTime method1 (Person parameter){
        return new DateTime();
    }

    @Override
    public String method2 (MotorCycle parameter){
        return new DateTime();
    }

    @Override
    public void method3 (String parameter){
        return new DateTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

人是我创造的对象.返回类型可以是任何.目前我不能这样做.它不让我.我的猜测是因为我的Class没有扩展Object.虽然一切都扩展了对象...所以......

或者我是否需要刷新我的Java知识?:)

编辑:添加了更复杂的类结构.

谢谢!

java

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

contravariance ×1

covariance ×1

overriding ×1