时间:2021-05-19
Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。协变返回类型允许返回更为具体的类型。
示例程序如下:
复制代码 代码如下:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
class Base
{
//子类Derive将重写此方法,将返回类型设置为InputStream的子类
public InputStream getInput()
{
return System.in;
}
}
public class Derive extends Base
{
@Override
public ByteArrayInputStream getInput()
{
return new ByteArrayInputStream(new byte[1024]);
}
public static void main(String[] args)
{
Derive d=new Derive();
System.out.println(d.getInput().getClass());
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1,泛型接口的协变如果泛型类型用out关键字标注,泛型接口就是协变的。这也意味着返回类型只能是T。泛型接口的抗变如果泛型类型用in关键字标注,泛型接口就是抗变的
基本概念协变:能够使用比原始指定的派生类型的派生程度更大(更具体)的类型。例如IFoo=IFoo逆变:能够使用比原始指定的派生类型的派生程度更新(更抽象)的类型
1.基本概念官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太
看下官方说明:意思是java方法签名包含两个要素:方法名称和参数列表。即不包括返回值类型。那为什么不能包含返回值类型呢?看一下如下两段代码示例。示例一:publ
前言Kotlin泛型的基本语法类似于Java,不过出于型变安全,不支持Java中的,通配符型变约束,而是采用类似C#的in,out用于支持协变和逆变,这同时避免