十二、泛型、反射和异常

 

一、泛型

泛型是javaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

javaSE1.5之前,没有泛型的情况下,通过对类型Object的引用来实现参数的”任意化”,”任意化”带来的缺点是要做显示的强制类型转换,而用这种转换的要求是要求开发者对实际参数可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动的和隐式的,提高代码的重用率。

 

这段话的意思是,javaSE1.5之前,假设我们在集合中存入了一个Object对象,这个Object对象我们知道是什么类型的,但是编译器不知道,所以取出来的时候还得强转,而且我们只有在知道这个对象类型的时候才能强转,否则看起来没错,运行时候还会抛异常呢。

 

二、反射

一个对象可以通过object.getClass()获得它运行时的类.

可以getName获得类名..

可以再getDeclaredMethods()获取这个类的所有能访问到的方法,获取到方法之后可以遍历,通过getName获取方法名,getModifiers()获取方法修饰符...

也可以getGenericInterfaces获取该类所有的接口。

可以getFields获取所有的能访问到的成员变量,再遍历中getName获取变量名,getModifiers()获取变量修饰符...

更多方法参考java.lang.reflect的帮助文档

 

三、异常

1.简介: 当程序出现无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏)时,java就会用异常对象来描述.

2.分类:

①检查性异常(java.lang.Exception)

程序正确,但因为外在的环境条件不满足,所以引发检查性异常。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

例如FileReader fileReader=new FileReader(new File("D:\666.txt"));,马上系统会提示你有一个异常未处理,因为你找文件,它可能找不到啊,如果找不到怎么办?这是一个异常,所以需要你马上处理。

 

②运行时异常(java.lang.RuntimeException)

这意味着程序存在bug,例如数组越界、0被除、入参不满足规范...这类异常需要更改程序来避免,java编译器强制要求处理这类异常。

 

③错误(java.lang.Error)

一般很少见,也很难通过程序解决,它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽,错误在程序中无需处理,而由运行环境处理。

 

顶层是java.lang.Throwable类,检查性异常、运行时异常、错误都是这个类的子孙类(ExceptionError继承自Throwable,而RuntimeException继承自Exception)

 

3.处理方式: java用两种方法来处理异常,①在发生异常的地方直接处理②将异常抛给调用者,让调用者处理.

 

try {可能发生异常的操作A;} catch (异常种类1 e) {该异常处理。//一般e.printStackTrace();

}catch (异常种类2 e) {该异常处理。//一般e.printStackTrace();

}

 

一般还会在最后加一个finally,如果把finally块至于try...catch...语句后,finally块一般都会得到执行(不管发没发生异常),它相当于一个万能的保险,即使前面的try块发生异常,而又没有对应异常的catch块,finally块将马上执行,一般我们在finally中实现对资源、流的关闭。

 

以下情况,finally块将不会被执行:

finally块中发生了异常;

②程序所在线程死亡;

③前面的代码中使用了System.exit();

④关闭cpu

 

 

Throw Exception,函数A 抛出一个异常,表面我这个函数不想管这个异常,到时候谁调用函数A谁再管这个异常。

 

4.异常的作用

当程序执行到某一块有错的时候,发生了异常,我们并不想让程序就此停住,因为有可能这个异常根本不影响后面代码的执行,所以我们处理异常并让程序继续执行。

 

转载于:https://www.cnblogs.com/myz666/p/7489365.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机日期的格式怎么写,在excel表格中怎么把日期格式改成文本格式(excle表格中改变日期格式)...

wps表格中如何改变日期格式平常最常是最简单的日入就是数字格式了,比如以今例,我们一般都会输入“20141214“,如图步骤阅读2①那么如何将这种格式转换成2014-12-14呢?方法:鼠标选中此单元格,然后右键鼠标选…

张首晟谈牛顿的《自然哲学的数学原理》

出版于1729年的第一英文版牛顿名著《自然哲学的数学原理》本文转载自丹华资本(DanhuaCapital )2016-01-28公众号张首晟文章。了解我的朋友都知道我最不欢喜礼品,总觉得物质生活越简单越好。所以每逢圣诞佳节,天伦之乐,…

前端填空题_一年前端面试总结|入职字节|2020.8

站在未来看现在你当像鸟飞向你的山前言普通本科,软件工程专业,2019年毕业进入奇安信集团(前360企业安全),实习期间遇到一群可以一起嗨的朋友,感觉很幸福,也很庆幸能够遇到hin nice的导师&#x…

09.07 jQuery 随意整理

IE 兼容版本的写法 <!--[if gt IE 8]> <!--> <script src"../jquery-3.2.1.min.js"></script> <!--<![endif]--> <!--[if lte IE 8]> <script src"../jquery-1.12.4.min.js"></script> …

分数怎么在计算机上关,电脑如何在注册表上关闭AutoRun功能

AutoRun是微软的windows系统的一种自动运行的文件命令&#xff0c;主要用于对于移动设施的自动运行。一些用户反馈说电脑运行AutoRun功能&#xff0c;导致系统很卡&#xff0c;有什么方法可以关闭AutoRun功能&#xff1f;其实关闭AutoRun功能方法简单&#xff0c;我们可以通过注…

【一图看全】北京新基建行动方案中的30大要点

转自&#xff1a;行业研究报告6月10日&#xff0c;北京市印发《北京市加快新型基础设施建设行动方案&#xff08;2020-2022年&#xff09;》&#xff08;以下简称“行动方案”&#xff09;&#xff0c;其中提出聚焦“新网络、新要素、新生态、新平台、新应用、新安全”六大方向…

docker port如何增加端口_docker部署redis实战

原创首发于公众号&#xff1a;编程三分钟“ 换电脑的时候不想再搭建开发环境了&#xff01;——编程三分钟”什么是dockerDocker是一个用来管理容器的应用程序&#xff0c;而容器就是模拟运行应用程序所依赖环境的一个服务。一般一个容器内只安装一个程序&#xff0c;在容器内的…

Android Studio配置GreenDAO 3.2.0和使用方法

我相信&#xff0c;在平时的开发过程中&#xff0c;大家一定会或多或少地接触到SQLite。然而在使用它时&#xff0c;我们往往需要做许多额外的工作&#xff0c;像编写SQL语句与解析查询结果等。所以&#xff0c;适用于Android ORM框架也就孕育而生了&#xff0c;现在市面上主流…

收件服务器主机名未响应,邮箱收件服务器主机名是什么

邮箱收件服务器主机名是什么 内容精选换一换FTP/SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库。当前仅支持Linux操作系统的FTP 服务器。连接FTP或SFTP服务器时&#xff0c;他们的连接参数相同&#xff0c;如表1所示。FTP/SFTP连接参数参数名说明取值样例…

数字孪生技术,让酷炫的智慧城市不再遥不可及

物联网智库 整理发布智慧城市对于不同的人&#xff0c;不同的角色所处不同立场都会有不同的定义。在普通人眼中“上班不拥堵&#xff0c;下班走近路”是智慧城市......在老年人眼中“独自在家遭遇危险&#xff0c;能有人及时提供帮助”是智慧城市......在消防员眼中“火情在苗头…

python中read和readline的区别_Python中read()、readline()和readlines()三者间的区别和用法...

前言众所周知在python中读取文件常用的三种方法&#xff1a;read(),readline(),readlines()&#xff0c;今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单&#xff0c;一眼扫过&#xff0c;待到用时却也只知道有这么几个方法&#xff0c;不懂得它的原理与用法。…

CentOS赋予一个普通用户root权限

http://www.linuxidc.com/Linux/2012-07/64530.htm转载于:https://www.cnblogs.com/Baronboy/p/7491592.html

腾讯文档网页版登录提示服务器,腾讯文档官网地址,腾讯文档电脑版pc端登录入口...

腾讯文档是腾讯近期推出的一款多人协作在线文档产品&#xff0c;不但打通QQ、微信和PC等多个平台&#xff0c;哪么腾讯文档官网地址是什么&#xff1f;有没有电脑版&#xff0c;想在pc端编辑文档怎么办呢&#xff1f;腾讯文档没有电脑版软件&#xff0c;但腾讯文档网页版可以替…

向深度学习三剑客学习四种科研精神(上)

来源&#xff1a;陈德旺科学网博客深度学习&#xff0c;尤其是深度神经网络学习算法的兴起和大数据的加持&#xff0c;结合GPU的算力&#xff0c;如同 “三英战吕布”&#xff0c;终于搞定了人工智能这一反复无常的“吕布”&#xff0c; 使得人工智能得以第三次复兴。如今&…

val什么意思vb中的属性值_老司机带你探索Mysql中int(1)、int(10)、int(11)的区别是什么?...

在上一篇原创文章MySQL一个表的自增id用完了&#xff0c;背井大佬让我用这些姿势再往里插数据&#xff0c;最后留下了一个问题&#xff0c;大家知不知道int(1)和int(11)有什么区别&#xff0c;没有小伙伴互动回答&#xff0c;只有一位老哥让我说一下什么区别&#xff0c;我说上…

【重点】【堆】347.前K个高频元素

题目 最大的K个元素 > 小根堆&#xff08;类似上窄下宽的梯形&#xff09; 最小的K个元素 > 大根堆&#xff08;类似倒三角形&#xff09; 法1&#xff1a;小根堆 class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> valToC…

Nginx 反向代理+高可用

反向代理主机IP&#xff1a;10.0.0.20 WEB01主机IP : 10.0.0.22 WEB02主机IP : 10.0.0.23 反向代理主机配置&#xff1a;10.0.0.20 [rootnode1 html]# vim /etc/nginx/conf.d/web.conf server {listen 80;server_name www.wanglan.com;location / {proxy_pass http://1…

DNS系统服务器端口是,dns端口号是多少默认

●在Windows 95&#xff0f;98、Windows NT、UNIX及Linux环境下&#xff0c;均可使用TCP/P联网&#xff0c;请回答下列问题。在Windows 95&#xff0f;98平台下安装与配置TCP&#xff0f;IP的顺序应该是&#xff1a;安装网络适配器 (40) &#xff0c;安装TCP/IP协议&#xff0c…

c#switch语句判断成绩_C#程序流程控制 知多少?

最近发现读书是个慢过程&#xff0c;很难一口吃个胖子&#xff0c;尤其读这种技术类的书&#xff0c;需要细嚼慢咽的精读&#xff0c;很耐心的读。迄今为止我一个像样的C#程序都没有做过&#xff0c;是小白中的小白&#xff0c;这倒不影响什么&#xff0c;毕竟在曾经学过C语言的…

无穷存在吗?

来源&#xff1a;数学职业家无穷大的存在问题是一个令人惊讶的古老问题。亚里士多德首先引入了一个明确的区分&#xff0c;以帮助理解它的意义。他区别两种不同的无穷大。其中之一&#xff0c;他称之为潜在无穷大&#xff1a;这种无限大刻画了无止境的宇宙或一个永无休止的名单…