原始方法的方法返回价值协方差.它有效吗?[英] method return value covariance for primitives. Is it works?

问题描述

**自Java 5;

我知道,如果在基类中我写:

public Number doSomething(){
...
}

在儿童课上,我可以写类似的东西

@Override
public Integer doSomething(){
    ...
}

但是我有一个问题.

如果在基类方法中返回 - 原始 - 大批 - 或收集.

在这种情况下如何使用协变量?

推荐答案

原语之间没有协方差.没有原始类型是其他任何类型.所以你不能这样做

class Parent {
    public int method() {
        return 0;
    }
}

class Child extends Parent {
    public short method() { // compilation error
        return 0;
    }
}

出于相同的原因,int和short的相应数组类型也不是协变量的.

使用数组类型,它类似于您的Number示例

class Parent {
    public Number[] method() {
        return null;
    }
}

class Child extends Parent {
    public Integer[] method() {
        return null;
    }
}

类似于Collection类型

类似
class Parent {
    public Collection<String> method() {
        return null;
    }
}

class Child extends Parent {
    public List<String> method() {
        return null;
    }
}

请注意,通用类型参数必须兼容(通用中没有协方差,除外的通配符).

其他推荐答案

  1. 原始:否
  2. 数组:仅当它是父母阵列类型的子类型
  3. 或收藏:与2
  4. 相同的东西

本文地址:https://www.itbaoku.cn/post/978584.html