Java基础整理(三)

本文详细介绍了Java中的泛型,包括泛型的引入、使用方式、泛型类、泛型通配符、擦除等概念。同时,讨论了异常处理机制,包括常见异常类型、异常处理方法以及如何自定义异常类。最后提到了`throws`和`throw`关键字的用法。
摘要由CSDN通过智能技术生成
  • 1,JDK1.5增加泛型很大程度上都是为了让集合记住其元素的类型。

  • 2,在接口、类、方法后增加尖括号,尖括号里放一个数据类型。

  • 3,JDK1.5改写后List接口、Iterator接口、Map接口

  • 4,类定义了泛型,其构造器依然是类名。

  • 5,创建带泛型声明的父类、接口之后,可以创建实体类或者子类,但要注意这些接口、父类不能再包含形参,要传入具体类型。

    • 如:public class Apple实现它的子类一定不能是 AA entends Apple, 应该是AA entends Apple
  • 6,不存在泛型类,因为不管泛型的实际类型参数是什么,它们运行时总是同样的类。如

    • List L1 = new ArrayList<>();
      List L2 = new ArrayList<>();
      System.out.println(L1.getClass() == L2.getClass());//结果是true
  • 7,静态方法、静态初始化块、静态变量的声明和初始化中不允许使用类型形参。

  • 8,系统不会真的生成泛型类,所以instanceof运算符后不能使用泛型类。

  • 9,虽然String类是Object的之类,但List类并不是List类的子类

  • 10,泛型通配符,如:List< ? > list

  • 11,当直接使用List< ? >这种形式是,即表明这个机会可以是任何泛型的List的父类。

  • 12,泛型类型参数的上限,如:Apple,T只能是Number或者Number的子类,限制了最大的上线是Number

  • 13,通配符的下限:< ? super T>,这个通配符表示的必须是T本身,或T的父类。

  • 14,泛型中的方法重载,允许设置通配符的上线和下限,有时会引起一些问题。

    public static < T > void copy(Collection< T > dest, Collection< ? extends T> src){}
    public static < T> T cope(Collection< ? super T> dest, Collection< T > src){}

    List< Object > L1 = new ArrayList<>();
    List< Integer > L2 = new ArrayList<>();
    copy(L1, L2);//这时编译就出错了,因为它可以同时匹配这两个方法,所以将引起编译错误。
  • 15,泛型的擦除,把一个具有泛型信息的对象赋给另一个没有泛型信息的变量,之前的泛型的信息就被擦除掉了

  • 16,创建元素类型是类型变量的数组对象也将导致编译错误。由于类型变量运行时并不存在,在编译时无法确定实际类型。
    T[] makeArray(Collection< T > coll)
    new T[coll.size()];//出错了

  • 17,异常类一般分为两种:异常(Exception)和错误(Error)

    • Exception就用try&catch&finally来处理,先在try中运行代码,catch处理可能出现异常,finally是一定会执行到里面的代码。
      常见的异常有:
      NumberFormatException(数字格式异常)
      IndexOutOfBoundsException(数组越界异常)
      ArithmeticException(除零异常)
      RuntimeException(运行时异常)
      异常常用的方法:
      getMessage():返回异常的详细描述字符串。
      printStackTrace():跟踪栈详细输出到标准错误输出
      printStackTrace(PrintStream s):跟踪栈详细输出到标准错误输出到指定的输出流
      getStackTrace():返回异常的跟踪栈信息。
      Error一般是由虚拟机造成的系统崩溃的,基本上不属于我们处理的了。
  • 18,throws是在方法声明抛出可能会出现的异常,throw是在代码中自己主动抛出一个异常对象

    • 如:test() throws IOException{}
      throw new Exception(“这里出错啦!”);
  • 19,自定义异常类:一继承Exception基类,二是需要为该类提供两个构造器:1是无参数的构造器,2是带字符串参数的构造器作为异常的描述信息。

    public class MyException extends Exception{
        //1,无参构造器
        public MyException(){}
        //2,带字符串的参数的构造器
        public MyException(String msg){
                super(msg);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值