java泛型的讨论
来源:互联网 发布:飞机升阻比知乎 编辑:程序博客网 时间:2024/06/05 20:54
一.泛型的使用
List<Integer> list = new LinkedList<Integer>();
list.add(new Integer(0));
list.add("Str"); //编译错误
Integer x = list.get(0)
二.泛型类
public class Prt<T>{
public void print(T t){
System.out.println(t);
}
}
三.泛型方法
可以单独将方法编写为泛型方
public <T> void prt(T bean){ ...}
四.泛型与数组
数组与泛型不能很好的集成
无法创建泛型数组T[] arr = new T[10];//error但是可以强制转型T[] arr = (T[])new Object[10];
五.擦除
Java中的泛型使用的是擦除技术来实现
其实就是为了提高安全性,而在编译时多做了一些检查
泛型在编译后将会消失,在运行时和不使用泛型时没有任何区别
public class Test1{
public static void main(String[] args){
List list = new ArrayList();
list.add(1);
int a = (Integer)list.get(0);
}
}
import java.util.*;
public class Test2{
public static void main(String[] args){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
int a = list.get(0);
}
}
反编译如上两段代码,结果是无区别的
注:要在泛型使用多态,可以使用通配符,带通配符的集合可以接收任何类型的集合,那如果只想传入指定类的集合或指定类的子类集合呢?
import java.util.*;
class Shape{}
class Circle extends Shape{}
class Rectangle extends Shape {}
public class Generics2 {
//通配符?可以传入任何泛型
static void printCollection(Collection<?> c){
for(Object e : c){
System.out.println(e);
}
}
//想传入指定类的集合或指定类的子类集合
static void drawAll(List<? extends Shape> shapes) {
}
public static void main(String[] args){
Collection<String> li = new ArrayList();
li.add("1");
li.add("2");
li.add("3");
Collection<Integer> c = new ArrayList();
c.add(1);
c.add(2);
c.add(3);
Generics2.printCollection(li);
Generics2.printCollection(c);
}
}
- java泛型的讨论
- Java参数传递的讨论
- 转帖 - Java全局变量的讨论
- Java多线程编程的讨论
- java synchronized的用法讨论
- java volatile关键字的讨论
- Java synchronized参数的讨论
- java变量类型的讨论
- Java并发编程的讨论
- Java可变参数讨论与重写,重载的相关讨论
- JAVA讨论
- 关于Java的Classloader的讨论收获
- 关于 Java 构造器的一些讨论
- 继续讨论Java里的closure
- 对Java嵌套类的讨论
- java中数组的讨论:是不是类?
- java中数组的讨论:是不是类?
- java中数组的讨论:是不是类?
- [nginx源码分析]nginx handler 模块解析
- Javascript预编译和执行过程
- 浙江大学PAT_乙级_1023. 组个最小数 (20)
- Markdown 语法(4)- Links 链接
- css两行显示省略号
- java泛型的讨论
- HDU 4722 Good Numbers(找规律)
- 自己总结的一些常数据结构基础知识
- 23个MySQL常用查询语句
- poj 3468 线段树延迟标记
- 使用UIAppearance协议自定义视图
- 快排中partition函数-java
- WebView简单使用方法
- C++ primer 读书笔记(第4章)表达式