java协变返回类型使用示例
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());
}
}
/*程序输出:
class java.io.ByteArrayInputStream
*/
相关推荐
-
java协变返回类型使用示例
Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类.协变返回类型允许返回更为具体的类型.示例程序如下: 复制代码 代码如下: import java.io.ByteArrayInputStream;import java.io.InputStream; class Base{ //子类Derive将重写此方法,将返回类型设置为InputStream的子类 public InputStream getInput() {
-
Java的静态类型检查示例代码详解
关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程: 动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 在各色各样的编程语言中,总共存在着两个类型检查机制:静态类型检查和动态类型检查. 静态类型检查是指通过对应用程序的源码进行分析,在编译期间就保证程序的类型安全. 动态类型检查是在程序的运行过程中,验证程序的类型安全.在Java中,编译期间使用静态类型
-
Java基础之类型封装器示例
本文实例讲述了Java基础之类型封装器.分享给大家供大家参考,具体如下: Java类型封装器:封装或者包装了基本类型的类.因为基本类型不是对象,所以需要类型封装器. Double :parseDouble(), Float:parseFloat(), Long:parseLong(), Integer:parseInt(), Short:parseShort(), Byte:parseByte(), Character,Boolean 示例代码: import java.io.*; class
-
java多线程返回值使用示例(callable与futuretask)
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子 复制代码 代码如下: package com.future.test; import java.io.FileNotFoundException;import java.io.IOException;i
-
Java泛型的类型擦除示例详解
目录 前言 泛型的类型擦除原则是: 1 擦除类定义中的类型参数 1.1 无限制类型擦除 1.2 有限制类型擦除 2 擦除方法定义中的类型参数 3 桥接方法和泛型的多态 总结 参考资料 前言 Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了"伪泛型"的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的"类型擦除"(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生
-
JAVA利用泛型返回类型不同的对象方法
有时需要在方法末尾返回类型不同的对象,而return 语句只能返回一个或一组类型一样的对象.此时就需要用到泛型. 首先先解释个概念, 元组:它是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取其中元素,但不能修改. 利用泛型创建元组 public class ReturnTwo<A,B> { public final A first; public final B second; public ReturnTwo(A a,B b) { first = a; second = b
-
使用Java实现构建jenkins的多个job并返回构建结果示例
背景: 使用java实现jenkins构建很简单,但是如何确定什么时候job已经构建完成才是关键,而且要实现多个job并行构建. 分析: 我有一篇文章提到过使用java实现jenkins构建,但是获取的结果是最后一次构建的结果,不能实时获取构建结果.实时获取构建结果有个关键的点,在于他会根据构建的版本号获取当前版本号的结果,如果对应版本号的结果为空则证明还在构建过程中,按照这个思路我们就可以进行编码了. 1.判断指定构建版本号的job是否执行完; 2.根据是否构建完成获取构建结果; /** *
-
Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)
概述 在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,因不同设置需要,本文分别从以下示例要点来介绍: 示例1: 1. 应用条件格式用于高亮重复.唯一数值 2. 应用条件格式用于高亮峰值(最高值.最低值) 3. 应用条件格式用于高亮低于或高于平均值的数值 示例2: 1. 应用单元格值类型的条件格式 2. 应用公式类型的条件格式 3. 应用数据条
-
Java中为什么不同的返回类型不算方法重载
目录 为什么不同返回类型不算方法重载? 方法重载的使用场景 方法重载匹配原则 匹配原则1:精准类型匹配 匹配原则2:基本类型自动转换成更大的基本类型 匹配原则3:自动装/拆箱匹配 匹配原则4:按照继承路线依次向上匹配 匹配原则5:可变参数匹配 总结 方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载. 比如以下 4 个 method 方法就可以称之为方法重载, 如下代码所示: public class OverloadExample { public
-
C++11返回类型后置语法的使用示例
C++11新标准增加的auto不仅可以自动推断变量类型,还能结合decltype来表示函数的返回值.这些新特性可以让我们写出更简洁.更现代的代码. 在泛型编程中,可能需要通过参数的运算来得到返回值的类型. 我们看一下下面这个例子: #include<iostream> using namespace std; template <typename R,typename T, typename U> R add(T t,U u) { return t+u; } int main()
随机推荐
- 详解ZXing-core生成二维码的方法并解析
- 完美兼容ie和firefox的asp.net网站加入收藏和设置主页
- PHP版微信公众平台红包API
- Python设计模式之抽象工厂模式
- Android 加载大图及多图避免程序出现OOM(OutOfMemory)异常
- mysql启动错误之mysql启动报1067错误解决方法
- Android 创建与解析XML(四)——详解Pull方式
- 优化mysql之key_buffer_size设置
- iframe里的页面禁止右键事件的方法
- JavaScript登录验证基础教程
- JavaScript仿网易选项卡制作代码
- Java的Spring框架中实现发送邮件功能的核心代码示例
- JS传递对象数组为参数给后端,后端获取的实例代码
- 右滑返回手势和UIScrollView中手势冲突的解决方法
- Linux 发行版和安装的基本知识
- Java web含验证码及权限登录实例代码
- smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
- Python爬虫框架Scrapy实例代码
- 详解Python3之数据指纹MD5校验与对比
- 对Django中static(静态)文件详解以及{% static %}标签的使用方法