Java基础之反射、异常、泛型、注解

1.反射

每一个类都有一个class对象,.class文件保存着class对象,类加载相当于class对象的加载。

反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类的 .class 不存在也可以加载进来。

Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect 类库主要包含了以下三个类:

  • Field :可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字段;
  • Method :可以使用 invoke() 方法调用与 Method 对象关联的方法;
  • Constructor :可以用 Constructor 的 newInstance() 创建新的对象。

反射的优点:

  • 可扩展性 :应用程序可以利用全限定名创建可扩展对象的实例,来使用来自外部的用户自定义类。
  • 类浏览器和可视化开发环境 :一个类浏览器需要可以枚举类的成员。可视化开发环境(如 IDE)可以从利用反射中可用的类型信息中受益,以帮助程序员编写正确的代码。
  • 调试器和测试工具 : 调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。

反射的缺点:

  • 性能开销大
  • 必须在一个有安全限制的环境中运行
  • 内部暴露:破坏抽象性、可移植性

       深入理解反射

2.异常

  • Error
  • Exception:受检异常、非受检异常

异常提高

3.泛型

(1)保证了类型的安全性:泛型约束了变量的类型,保证了类型的安全性。例如List<int>和ArrayList。List<int>集合只能加入int类型的变量,ArrayList可以Add任何常用类型,编译的时候不会提示错误。

(2)避免了不必要的装箱、拆箱操作,提高程序的性能:泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型,避免了不必要的装箱、拆箱操作。

(3)消除强制类型转换,可读性增加、减少出错的机会。

instanceof 运算符后也不能使用泛型类。

 

4.注解

起到说明、配置的功能,仅仅起到辅助性的作用。

发布了13 篇原创文章 · 获赞 1 · 访问量 385

猜你喜欢

转载自blog.csdn.net/trytrylmt/article/details/104062404