Java新特性---JDK1.5
作者:互联网
JDK1.5 新特性
可变参数
- 要求方法可以接收任意个整数并且返回它们相加结果
类型 … 参数名称- 一个方法有且只能有一个可变参数,并且放在方法的最后一个参数
- 可变参数的本质还是数组
for each循环
- 用于数组与类集的简单输出,但是不能修改数组
静态导入
- import static 包名
- 静态导入方法使用时不需要加类名
泛型-守门员
- 泛型类:
- 泛型指的是在类定义的时候并不会设置类的属性或方法中参数的具体类型,而是在类使用时在定义
- 语法
class MyClas<T>{ T value; }
- T被称为类型参数,可以指代任何类型
- T:代表一般类
- E:代表Element,常用于泛型类的属性
- K:代表Key的意思
- V:代表Value的意思,常与K一起配合使用
- S:代表Subtype的意思
- 泛型只允许接收类,所有基本类型必须使用包装类
- 泛型方法
public <T> void MyMethod(T t){ System.out.println(t); }
- 当泛型类与泛型方法共存时,泛型类中的类型参数与泛型方法中的类型参数没有关系,
泛型方法始终以自己定义的参数类型为准
- 规范:泛型方法参数类型与泛型类参数类型不要同名
- 通配符
- ?
- 用于方法中,表示参数可以接收任意类型的泛型类
- 只能取得类中数据,不能修改数据,因为类型不确定,无法设置确定类型
- ? extends 类:设置/取得泛型上限
- eeg: ? extends Number:表示泛型必须是Number及其子类
- 用在类上 T extends 类:表示T必须为类或者子类
- 用在方法上:? extends 类:只能接收类或者其子类的泛型类
- 只能取得属性值,不能修改值(发生父类到子类向下转型,需要强转,不确定具体子类,无法转型)
- ? super 类:取得泛型下限-只能用在方法中
- eg:? super String:表示此方法只能取得String以及其父类Object
- 可以设置属性值(子类到父类是自动的向上转型)
- 泛型接口
interface IInterface<T>{ T test(T t); }
- 子类确定好类型
class InterfaceImpl implements IInterface<String>{ }
- 子类继续保留泛型
class InterfaceImpl<T> implements IInterface<T>{ }
- 类型擦除(语法糖)
- 泛型信息仅存在于代码编译阶段,进入JVM之前,与泛型相关的信息会被擦除掉
- 专业术语:泛型擦除
- 换句话说,泛型类与普通类在Java虚拟机内没有任何区别,泛型类进入JVM之前会进行类型擦除,之前泛型类的参数若没有指定上限,会被擦除为Object类型。如果指定上限,则会被擦除成相应类型上限。
- 语法糖(方便程序员开发):仅存在于源码阶段,编译后就消失不见
- 泛型、自动拆箱装箱
枚举
- 语法:
enum Color{ RED,BULE,GREEN; }
- 使用enum关键字定义的枚举结构实际上是默认继承了Enum类的枚举类
- Enum的两大属性
- name:枚举对象名称
- ordinal:枚举对象数字下标
- public final String name() :取得枚举对象名称
- public final int ordinal() :取得枚举对象下标
- 枚举类.valus() :取得所有枚举对象
- 枚举中定义其它结构
- 枚举中若定义构造方法,构造方法必须用private封装(枚举类是多例类,外部无法产生对象)
- 枚举中若定义其它结构,枚举对象必须放在枚举类首行
- 枚举实现接口
- 枚举中的对象自动变为接口对象
注解–@
- @Override 准确覆写
当子类覆写父类方法时,此注解检查覆写的方法是否正确声明,只有满足覆写方法要求才会编译通过,否则编译出错
- @Deprecated 过期声明
建议用户不使用原有的类&方法时,可以在类或方法上@Deprecated表示当前版本不推荐使用
- @SuppressWarings 压制警告
调用某些操作可能产生问题的时候会出现警告信息,但是警告信息并不是异常
标签:Java,子类,特性,JDK1.5,类型,枚举,参数,泛型,方法 来源: https://blog.csdn.net/yunhaoyoung/article/details/90293689