Java个人学习之旅(第十三天)

1. 泛型

说明:

  1. 通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型

  2. 如Collection<E>,Map<K,V>,Dao<T>

  3. 泛型中无继承关系,泛型不同的引用不能相互赋值

  4. 泛型中不能指定基本数据类型,可以指定包装类型

  5. 泛型可以定义在类,接口中,也可以定义在变量,方法返回值类型,方法参数类型中

下面就以模拟MVC开发模式举例,泛型定义在类上的作用:

首先有两个空内容的类,分别是Student,Teacher类


public class Teacher {

}

public class Student {

}

然后定义一个Dao类,Dao在MVC中被称为数据操作层,有数据最基本的增删查改的方法,泛型就用在这里

public class Dao<T> {

	//这里只写一个增加的方法,其他方法同理
	public void add(T t) {
		
	}
}

最后再写两个类,StudentDao和TeacherDao,都继承Dao类


//泛型中定义Teacher类,说明TeacherDao可以操作Teacher类
public class TeacherDao extends Dao<Teacher>{

	@Override
	public void add(Teacher t) {
		// TODO Auto-generated method stub
		super.add(t);
	}
	
}

//泛型中定义Student类,说明StudentDao可以操作Student类
public class StudentDao extends Dao<Student>{

	@Override
	public void add(Student t) {
		// TODO Auto-generated method stub
		super.add(t);
	}
}

可以看到,这样一来不同的Dao对于数据的操作就可以被区分,相关的Dao操作相关的类,非常好用
泛型定义在接口上也是同样的道理

都知道集合可以储存不同类型的元素,但是当我们要使用集合中的元素时,集合中元素类型的多样性反而会使代码变得复杂

这个时候就可以使用泛型,以ArrayList为例:

//泛型中定义的是Integer类型,也就是说该集合只能存放Integer类型和int类型的元素
ArrayList<Integer> list = new ArrayList<>();

等号右边的泛型的定义类型会通过等号左边自动推断(jdk1.8以后)

该定义方式被称为钻石表达式

2. 异常

Throwable

说明:

在程序执行过程中遇到预期之外的情况导致JVM运行停止

大概的继承结构图:
在这里插入图片描述
异常的捕捉方式:

  1. try…catch
		try {
			//该代码块内运行可能会发生异常的代码
		} catch (Exception e) {
			// 异常的处理方式
			//捕获异常,形参为要捕获异常的类型,异常的类型可以向上兼容
			e.printStackTrace();
		}finally{
			//这里的代码在try..catch后执行且一定会执行
		}
  1. throw/throws抛出异常,再用try…catch 捕捉

throws:表示可能会抛出的异常,用在方法声明后面,有就抛没有就不抛

throw:手动抛出一个异常,用在方法体内,该异常可以是自定义的异常类

例子:

//自定义一个MathException类继承Exception类,并且继承其中一个打印异常信息的构造方法
public class MathException extends Exception{
	public MathException(String message) {
		super(message);
	}
}


public class Test2 {
	public static void main(String[] args) {
		try {
			test();
		} catch (Exception e) {
			// 捕获异常,打印异常信息
			System.out.println(e.getMessage());
		}
	}
	
	//该方法抛出自定义的异常类
	private static void test() throws MathException{
		try {
			int num = 5/0; //一定会有异常
		} catch (Exception e) {
			//抛出异常
			throw new MathException("除以0异常");
		}
	}
}

运行结果:

在这里插入图片描述

注意:抛异常都是抛给上一级调用的方法,谁调用我,我就抛给谁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值