开发面试题 分布式机器 HashMap numpy Jetson Nano permissions jq解析json web前端毕业设计题目 oracle删除字段 mysql倒序 js基本数据类型有哪些 kafka启动命令 python程序实例 python安装模块 java初级入门教程 javaworld java的instanceof java得到当前时间 python网站开发实例 qq飞车剧情辅助 右键菜单背景 脚本下载 字幕制作软件哪个好 js延迟加载 说话不算数的经典语句 dnf瞎子传说套选择 sdm439 dnf95b套 jq循环 linux系统下载 小米手环怎么连接手机 刷机精灵pc版 微信问卷调查怎么做 租房管理软件 华为手环怎么连接手机 饥荒黄油 OPPO投屏 编程开发软件 qq拼音输入法官网 php递归函数
当前位置: 首页 > 学习教程  > 编程语言

4.1核心库(泛型)

2020/10/8 19:21:30 文章标签:

泛型 概述 泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参&a…

泛型 概述

  1. 泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

使用

泛型类

定义一个泛型类:
public class ClassName<T>{
	private T data;
	public T getData() {
		return data;
	}
	public void setData(T data) {
	this.data = data;
	}
}

泛型接口

public interface IntercaceName<T>{
	T getData();
}
实现接口时,可以选择指定泛型类型,也可以选择不指定, 如下:
指定类型:
public class Interface1 implements IntercaceName<String> {
		private String text;
	@Override
	public String getData() {
	return text;
	}
}
不指定类型:
public class Interface1<T> implements IntercaceName<T> {
private T data;
@Override
public T getData() {
return data;
}
}

## 泛型方法
private static <T> T 方法名(T a, T b) {}

泛型限制类型

1. 在使用泛型时, 可以指定泛型的限定区域 ,
- 例如: 必须是某某类的子类或 某某接口的实现类,格式:
   <T extends 类或接口1 & 接口2>

泛型中的通配符 ?

类型通配符是使用?代替方法具体的类型实参。
1 <? extends Parent> 指定了泛型类型的上届
2 <? super Child> 指定了泛型类型的下届
3 <?> 指定了没有限制的泛型类型

作用
1、 提高代码复用率
2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

在编译之后程序会采取去泛型化的措施。
也就是说Java中的泛型,只在编译阶段有效。
在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加
类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

Java内存空间理解
堆:堆主要存放Java在运行过程中new出来的对象,凡是通过new生成的对象都存放在堆中,对于堆中的对象生命周期的管理由Java虚拟机的垃圾回收机制GC进行回收和统一管理。类的非静态成员变量也放在堆区,其中基本数据类型是直接保存值,而复杂类型是保存指向对象的引用,非静态成员变量在类的实例化时开辟空间并且初始化。所以你要知道类的几个时机,加载-连接-初始化-实例化。

jdk1.8 永久代被改为 元空间

String不可变的字符序列 StringBuffer StringBuilder可变的字符序列,都是用来解决拼接字符串的

StringBuffer:是线程同步安全的–一般多线程用

StringBuilder:是线程不同步的,不安全,jdk5才出–一般单线程用(多线程可以自己加锁)


本文链接: http://www.dtmao.cc/news_show_250146.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?