JDK各大版本重要新特性

本文详细介绍了JDK1.5和JDK1.8的重要新特性,包括泛型、枚举、静态导入、可变参数、注解、Lambda表达式和方法引用等。泛型提供了类型安全,枚举替代了多例形式,Lambda表达式则引入了函数式编程概念,而方法引用进一步简化了代码。
摘要由CSDN通过智能技术生成

JDK各大版本新特性

JDK1.5新特性

1.方法的可变参数:数组

    public static int add(int ... arr) {
   
        int length = arr.length;
        int sum = 0;
        for(int i =0; i < length; i++) {
   
             sum = sum + arr[i];
        }
        return sum;
    }

在方法中用 … 表示可变参数

可变参数必须放在方法参数的最后一个并且有且只有一个 ;

2.for-eanch语句(不再详解)

3.静态导入(import)(了解)

import static 导入一个类的所有静态域(方法与属性),
使用导入类的静态域就像是在本类中定义的一样;
使用静态导入后调用那个包中的方法可不加类名直接调用

注意:不推荐使用静态导入;

4.泛型(类型守门员)

定义:类或方法在定义时类型不确定。使用时才确定类型。

alt+insert快速导入(例如getter()、setter())

ClassCastException(RuntimeException):在强转时,两个毫无关系的类产生的异常。

安全隐患:存在于强转,泛型可以避免向下转型的安全隐患;

4.1泛型:在定义时类型不确定,只有在具体使用时才能确定类型。
4.2泛型类
class MyClass<T,E> {
     //泛型类可以接受多个类型
    private T t;
    private E e;
}
  • <>内的T被称作是类型参数,用于指代任意类型,不包括基本类型;
  • 一般使用单个大写字母
  • 引入泛型后,一个泛型类的类型在使用时已经确定好,因此无需向下转型;(解除了向下转型的安全隐患)
  • 技巧:IDEA变量自动补全:ctrl+alt+V
4.3泛型方法()

定义:在方法声名上用<>定义的方法才叫泛型方法,泛型方法可以脱离于泛型类独立存在;

class MyClass2 {
   
    public <T> void method(T t) {
   
        System.out.println(t);
    }
}

例:

当泛型类与泛型方法共存时,泛型方法始终与自己的类型参数为准,与泛型类中的类型参数无关。
所以为了避免混淆,一般使用不同的类型参数来定义泛型类与泛型方法;

class MyClass<T> {
   
    private T t;
    public <T> void method(T t) {
   
        System.out.println(t);
    }
}

通配符:(⭐)

问题:引入泛型后参数类型确定,方法参数只能接受一种类型的泛型类

1.?通配符

只能取得泛型对象中的值,无法通过类似setter方法的设置值
由于传入类型无法确定,因此无法设置具体值到相应对象中
例码:

class Myclass<T> {
   
    private T t;

    public T getT() {
   
        return t;
    }

    public void setT(T t) {
   
        this.t = t;
    }
}
public class Test1 {
   
    public static void main(String[] args) {
   
        fun(new Myclass<String>());
        
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值