Java-day2

这个是我一边听b站上黑马程序员的课程,一边随便记得一些重点,如果想系统学习的同学,还是别看了耽误时间,推荐B站学习

泛型

泛型概述

泛型:是jdk5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数

参数化类型将类型由原来的具体类型参数化,然后在使用/调用时传入具体的类型

好处:将运行时期的问题提前到了编译时期,避免了强制类型转换

泛型类

为什么要有泛型类?我比较浅显的理解是当我们定义一个类的时候,我们定义一个String类型的成员变量以及set,get方法,于是当我们调用这个类创造对象的时候,我们传入的参数只能是String类型的,否则就会报错。如果我们想传入其他类型的参数的时候就必须在创建一个类,这是麻烦的。

但是如果我们使用泛型类

//泛型类
public class Genericity<T> {
    private T t;

    public void setT(T t) {
        this.t = t;
    }
    public T getT(){
        return t;
    }
}

//测试类
public class Test {
    public static void main(String[] args) {
        Genericity<String> s = new Genericity<>();
        s.setT("123");
        Genericity<Integer> i = new Genericity<>();
        i.setT(1);

    }
}

泛型方法

public 返回值类型 方法名(T t){};

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

public class Test {
    public static void main(String[] args) {
       Genericity g =new Genericity();
       g.show("123");
       g.show(12.34);
       g.show(true);

    }
}

泛型接口

//接口
public interface Gene<T> {
    void show(T t);
}
//实现类
public class GeneImpl<T> implements Gene<T> {
    @Override
    public void show(T t) {
        System.out.println(t);
    }
}

类型通配符

为了表示各种泛型List的父类,可以使用类型通配符

  • <?> :可以匹配任意类型
  • <? extends 类型>:可以使用的类型通配符的上限
  • <? super 类型>:可以使用类型通配符的下限

可变参数

java6
如果我们包含可变参数与不变参数,可变参数要放在最后面

public static void sum(int b,int... a)

可变参数的使用

  • Arrays工具类中有一个静态的方法:
    public static List asList(T… a):返回由指定数组支持的固定大小的列表
  • List接口中有一个静态的方法:
    public static List asof(E… elements):返回包含任意数量元素的不可变列表
  • Set接口中有一个静态的方法:
    pubilc static Set of(E… elements):返回一个包含任意数量元素的不可变集合
import java.util.*;

//Arrays
public class Test {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("hello", "world", "java");
        /*下面两行会产生报错,因为这个列表得大小的固定的,但是增加与删除会改变列表得
        大小,所以会产生报错*/
        //list.add("123");//UnsupportedOperationException
        //list.remove("java");//UnsupportedOperationException
        list.set(1,"nihao");
        System.out.println(list);

    }
//List
import java.util.*;

public class Test {
    public static void main(String[] args) {
        List<String> list = List.of("hello", "world", "java");
        //增删改都不可以
        list.add("world");//UnsupportedOperationException
        list.remove("java");//UnsupportedOperationException
        list.set(1,"nihao");//UnsupportedOperationException
        System.out.println(list);

    }
}
//set
import java.util.*;

public class Test {
    public static void main(String[] args) {
        Set<String> se = Set.of("hello", "world", "java");
        //不能使用增删方法,本身没有修改方法
        se.add("123");//UnsupportedOperationException
        se.remove("java");//UnsupportedOperationException
        System.out.println(se);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值