泛型
1,泛型的概念
Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
2,在集合中使用泛型,总结:
①, 集合接口或集合类在jdk5是都修改为带泛型的结构
②,注意:泛型的类型必须是类,不能是基本数据类型。
③,如果实例化时,没有指明泛型的类型。默认类型是java.lang.Object类型
3,使用泛型应该注意:
①,静态方法中不能使用类的泛型(泛型需先创建对象再使用)
②,异常中不能使用类的泛型
4,泛型再在方法中的使用如下:
//泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系
public <E> list<E> copyFromArrayToList(E[] arr){
ArrayList<E> list = new ArrayList<>();
for(E e : arr){
list.add(e);
}
return list;
}
5,泛型在继承方面的体现
- 虽然类C是类D的父类,但是G< C>和G< D>二者不具备子父类关系,二者是并列的关系,代码如下:
List<Object> list1 = null;
List<String> list2 = null;
//此时的list1和list2的类型不具有子父类关系
list1 = list2;(报错)
反证法:
假设list1 = list2
list.add(123);//导致混入非String的数据,出错
补充:类C是类D的父类,C< G>是D< G>的父类,代码如下:
AbstarctList<String> list1 = null;
List<String> list2 = null;
ArrayList<String> list3 = null;
list1 = list3;
list2 = list3;
6,通配符的使用
-
通配符:?
类A是类B的父类,G< C>和G< D>是没有关系的,二者共同的父类是:G<?>添加:对于List<?>就不能向其内部添加数据,除了添加null之外
获取(读取):允许读取数据,读取的数据类型为Object
-
有限制条件的通配符的使用
? extends C:
G<? extends C> 可以作为G< C>和G< D>的父类,其中D是C的子类? super C:
G<? super C> 可以作为G< C>和G< D>的父类,其中D是C的父类
File类的使用:
1,File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
2,File类声明在java.io包下
①,如何创建File类的实例
File(String filePath);
File(String parentPath, String childPath);
File(File parentFile, String childPath);
②,相对路径:相较于某路径下,指明的路径
绝对路径:包含盘符在内的文件或文件目录的路径
③,路径分隔符
windows : \\
unix : /
3,File类的获取功能
public String getAbsolutePath(): 获取绝对路径
public String getPath(): 获取路径
public String getName():获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length():获取文件长度(字节数)。不能获取目录的长度
public long lastModified():获取最后一次的修改时间,毫秒值
public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
public boolean renameTo(File dest):吧文件重命名为指定的文件路径比如:file1.renameTo(file2)为例:要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在
public boolean isDirectory():判断是否是文件目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判读是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
pulic boolean createNewFile():创建文件。若文件存在,则不创建,返回false
public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建
public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建
public boolean delete():删除文件或文件夹(注意:Java中的删除不走回收站)