网站首页 > 精选教程 正文
泛型(generic)本质是数据类型的参数化。
菜鸟网站:
泛型是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的声明位置,紧跟在类名后面,用<>包裹的:
class MyCollection <E> { // 相当于形式参数
Object[] objects = new Object[5];
public void set(E e, int index) {
objects[index] = e;
}
public E get(int index) {
return (E)objects[index];
}
}
复制代码
上面的代码,就使用了泛型。 在类里面,set 和 get 方法,还是有点细节不一样的。
- 第一个 set 方法,在 index 位置设置元素 e。e 的类型是 E。具体是什么呢,不用管。到时候定义的时候是什么就是什么。就是让 objects数组的索引 index 的格子里,放 e 的引用。
- 第二个 get 方法,返回的是 某个索引对应的元素,返回的类型是 E。return 实现的时候加了一个强制转换。
这样写的好处是,不用确定类型必须是什么,那就可以看我七十二变了对不对。我可以传基本的数据类型,也可以传复杂点的,定义一个类。 就非常灵活。是学 Java 的哇塞时刻。
代码
在上面定义好的基础上,来写 main() 的测试。
在第一行打好后,再 set,IDEA 就会贴心地提示:
set 方法里的参数需要的类型,就和第一句 MyCollection<> 尖括号这里的类型一致。
public class TestGeneric {
public static void main(String[] args) {
MyCollection<String> mc = new MyCollection<>(); // 相当于实际参
mc.set("fang",0);
mc.set("Kris",2);
String b = mc.get(2);
System.out.println("第 3 个元素:" + b);
//
// List list = new ArrayList();
// Map map = new HashMap();
}
}
复制代码
运行结果:
结合一些方法的重写,比如重写一下 Comparable 方法,然后就可以实现自定义比较了。
Python里面的话,如果是函数传参,并不需要我们指定类型。隐隐的就实现了泛型的方法。
在高版本里,新增了提示。比如 LeetCode 定义函数后,括号内写了 num 的类型是 int。
求助 Moment
最近经常搞不清: map.get(index); 之后,我就希望这个能自己打印出来。但其实是需要用 System.out.println 包裹才可以打印出来。
每次都是看到结果才反应过来:哦,怎么什么都没打印出来。 这样,才回过头来改正。
如果有高手有类似的心理,求教呀~
猜你喜欢
- 2024-11-06 Java基础-泛型超级详细讲解 java中的泛型指的是什么
- 2024-11-06 Java高级特性—泛型看这一篇就够了
- 2024-11-06 详解Java中的泛型(泛型的语法,擦除机制,泛型的上界)
- 2024-11-06 Java经典语法糖:你真的理解泛型吗?
- 2024-11-06 学习廖雪峰的JAVA教程---泛型(编写泛型,静态方法泛型,多个)
- 2024-11-06 Java泛型机制详解;这些你都知道吗?
- 2024-11-06 Java 泛型 java泛型中?和T的区别
- 2024-11-06 一篇好文章告诉你如何使用Java泛型?
- 2024-11-06 浅谈Java泛型 java 泛型 r
- 2024-11-06 还不懂Java的泛型?只用这一篇文章,保证你面试对答如流
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)