泛型和异常

集合如同数组一般,在创建对象时明确元素的数据类型,这种技术被称为泛型。

<E>表示泛型,E是约束数据类型。

泛型类(把泛型定义在类上):public class 类名<泛型>

泛型方法(把泛型定义在方法上):public <泛型> 方法名(<泛型> 参数名)

泛型接口(和泛型类相似)

 

泛型通配符

这里贴一点别人的代码

public class GenericTest {

    public static void main(String[] args) {

        Box<Number> name = new Box<Number>(99);
        Box<Integer> age = new Box<Integer>(712);

        getData(name);
        
        //The method getData(Box<Number>) in the type GenericTest is 
        //not applicable for the arguments (Box<Integer>)
        getData(age);   // 1

    }
    
    public static void getData(Box<Number> data){
        System.out.println("data :" + data.getData());
    }

}

这个时候1处是会报错的,这说明尽管number和integer是父子类关系,但是Box<Number>和Box<Integer>是没有该关系的,要想使代码得以通过,就需要使用泛型通配符。

格式:<? extends E> :E及其子类 ,  <? super E>:E及其父类

 

可变参数

可变参数概述:定义方法时不知道要定义所少个参数。

格式:修饰符 返回值类型 方法名(数据类型... 变量名)

这里的变量名实际上和数组的意思是一样的,

如果一个方法有可变参数,并且有多个参数,那么可变参数要放在最后。

private static int sumUp(int... values) {
}

private static int sumUp(int[] values) {
}

意思其实是一样的

静态导入

1.方法级别的导入

2.格式:import static 包名.类名.方法名

3.方法必须是静态的,多个类下有同名的方法,则这种方式就不能用

异常

Throwable:所有异常的父类(超类)

异常分为运行时异常和非运行时异常,error

error是我们无法处理的严重问题

运行时异常是编译时能通过的异常,非运行时异常是编译无法通过的异常。

运行时的异常我们可以不用处理,但是编译时的异常是必须处理的,否者无法通过编译。

以下引用第三方作者对异常的理解:

Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。

Java异常机制用到的几个关键字:try、catch、finally、throw、throws。
• try        -- 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
• catch   -- 用于捕获异常。catch用来捕获try语句块中发生的异常。
• finally  -- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
• throw   -- 用于抛出异常。
• throws -- 用在方法签名中,用于声明该方法可能抛出的异常。

 

在catch中的异常类名需要注意以下几点:

1.异常类名能明确的尽量明确,不用大的laichuli

2.平级关系的类前后无所谓,如果出现了父子关系,父必在后面

异常类的方法:getMessage();异常的消息字符串

toString();异常的简单信息描述

printStackTrace;获取异常名和异常信息,以及异常出现在程序中的位置,返回值void,把信息输出在控制台

 

自定义异常:继承自exception或RunTimeException,子类重写父类方法时,子类必须抛出父类的异常或父类子类的异常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值