博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 泛型 -- 泛型类,泛型接口,泛型方法
阅读量:6177 次
发布时间:2019-06-21

本文共 1216 字,大约阅读时间需要 4 分钟。

泛型T

泛型的许多最佳例子都来自集合框架,因为泛型让您在保存在集合中的元素上指定类型约束。
在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数。形式类型参数与实际类型参数之间的关系类似于形式方法参数与实际方法参数之间的关系,只是类型参数表示类型,而不是表示值。

有没有可能不指定类型?有没有可能在运行时才知道具体的类型是什么?

所以,就出现了泛型。

eg:

public class Container<K, V> {
private K key;
private V value;

public Container(K k, V v) {

key = k;
value = v;
}

在编译期,是无法知道K和V具体是什么类型,只有在运行时才会真正根据类型来构造和分配内存

一个基本的原则是:无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛化,那么应该有限采用泛型方法

public class Main {

public static <T> void out(T t) {

System.out.println(t);
}

public static void main(String[] args) {

out("findingsea");
out(123);
out(11.11);
out(true);
}
}

可以看到方法的参数彻底泛化了,这个过程涉及到编译器的类型推导和自动打包,也就说原来需要我们自己对类型进行的判断和处理,现在编译器帮我们做了。这样在定义方法的时候不必考虑以后到底需要处理哪些类型的参数,大大增加了编程的灵活性。

再看一个泛型方法和可变参数的例子:

 

public class Main {

public static <T> void out(T... args) {

for (T t : args) {
System.out.println(t);
}
}

public static void main(String[] args) {

out("findingsea", 123, 11.11, true);
}
}

输出和前一段代码相同,可以看到泛型可以和可变参数非常完美的结合。

 

参考:

Java泛型:泛型类、泛型接口和泛型方法 - findingea - SegmentFault

https://segmentfault.com/a/1190000002646193

 

Java泛型详解 - Jinuxwu的专栏 - 博客频道 - CSDN.NET

http://blog.csdn.net/jinuxwu/article/details/6771121/

 

Java 可变参数 - 蛊惑Into - 博客园

http://www.cnblogs.com/whgw/archive/2011/10/01/2197103.html

你可能感兴趣的文章
CentOS 7.2 部署Saltstack
查看>>
centos7下安装MPlayer
查看>>
docker容器中安装vim
查看>>
smokeping 监控
查看>>
NTB EEPROM设置与跨节点数据传输
查看>>
Linux挂载NTFS硬盘错误解决办法
查看>>
IEEE 802.1Q Tunneling
查看>>
linux服务器之lamp(傻瓜式)
查看>>
接口测试Fiddler实战
查看>>
那个能报警的相机有了新伙伴:海康威视运动相机登场
查看>>
CSVDE批量导入域用户并更改密码和启用
查看>>
NULL与""空字符串的区别
查看>>
OSPF邻居关系建立过程详解
查看>>
JDK10 EA版特性速览
查看>>
超过254个IP,如何规划子网
查看>>
Amoeba新版本MYSQL读写分离配置
查看>>
制作XPE启动光盘的教程
查看>>
计算机网络基础
查看>>
一步步打造漂亮的新闻列表(无刷新分页、内容预览)(2)
查看>>
cron任务计划
查看>>