主页 > 新闻资讯 > 大数据开发基础之JAVA反射注解

大数据开发基础之JAVA反射注解

作者:游老师 浏览次数: 2021-03-18 13:52
今天要给大家带来的是大数据开发基础之JAVA反射、注解,这一篇文章是JAVAse的最后一章节,这节学完后我们将开启新的篇章,开始学习JAVAweb。那么接下来就跟着本篇文章了解下JAVA的反射和注解吧。
一、反射
在运行时,通过反射可以获取类的所有信息。反射的灵活使用也为很多逻辑的扩展提供了可能,通过Java的反射机制,可以在程序中访问已经加载到JVM中的Java对象的描述,实现访问、检测、修复和修改描述Java本身对象的功能,Java中的java.lang.reflect包提供使用注解功能。
(1)动态语言:是指程序在运行是可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的JavaScript就是动态语言,除此以外Python等也属于动态语言,而C、C++则不属于动态语言。从反射角度说Java属于半动态语言。
(2)反射机制:指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。在Java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。
(3)功能:
1.在运行时判定任意一个对象所属的类;
2.在运行时创建对象;
3.在运行时判定任意一个类所具有的成员变量和方法;
4.在运行时调用任意一个对象的方法;
5.生成动态代理;
(4)反射缺点:通过反射调用方法的效率比直接调用的效率要至少慢一倍以上,这就是反射在给予JAVA开发灵活性的同时带来的弊端
(5)优点:反射可以再众多模式中应用,比如设计模式中的应用,包括在工厂模式和代理模式中的应用
在运行时判定任意一个对象所属的类;
  在运行时创建对象;
  在运行时判定任意一个类所具有的成员变量和方法;
  在运行时调用任意一个对象的方法;
  生成动态代理;
二、注解(Annotation)
注解:也称为元数据,是Java 5中的一项新功能。注解是一种可以在Java代码中插入的注释或元数据。 这些注解可以在编译时通过预编译工具进行处理,也可以在运行时通过Java Reflection进行处理。为我们在代码中添加信息提供了一种形式化的方法,注解在一定程度上是在把元数据与源代码文件结合在一起。
这是一个类注释的例子:
@MyAnnotation(name="someName",  value = "Hello World")
public class TheClass {
}
类TheClass的注释@MyAnnotation写在自己类上。 注释被定义为接口。 这是MyAnnotation定义:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    public String name();
    public String value();
}
@标记为注释。 一旦定义了注释,就可以在代码中使用它
注解定义中的两条指令@Retention(RetentionPolicy.RUNTIME)和@Target(ElementType.TYPE)指定了注释的使用方式
(1)作用:
1.能够以编译器来测试和验证的的格式,存储有关程序的额外信息
2.用来生成描述符文件,或新的类定义
3.有助于减轻编写“样板”代码的负担
4.将元数据保存在Java源代码中,利用annotation API为自己的注解构造处理工具
(2)注解的标记
1、@target:修饰的对象范围,设置使用的元素种类,如果未设置就表示用于所有元素,使用ElementType设置。
ElementType 枚举常量有:
ANNOTATION_TYPE:表示用于Annotation的类型
TYPE:作用与类、接口、枚举
CONSTRUCTOR:作用于构造方法FIELD:作用于属性
METHOD:作用于方法
PARAMETER:作用于参数
LOCAL_VARIABLE:表示局部变量
PACKAGE:表示用于包
2、@Retention:定义被保留的时间长短
SOURCE:不编译到Annotation类的文件中
CLASS:编译到Annotation的文件中,运行时不加在到JVM中
RUNTING:运行时加载到JVM中,有效范围最大
3、@Documented 描述-javadoc
@Documented用于描述其他类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。
4、@Inherited 阐述了某个被标注的类型是被继承的
@Inherited元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
使用注解的过程中,很重要的一部分就是创建与使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。
以上就是关于大数据开发基础之JAVA反射注解的基础知识了,至此JAVAse的内容我们都讲完了,明天就会开始讲JAVAweb了。祝大家学习进步,事业高升。
希望大家点个关注,及时收取最新文章推送。
有问题的欢迎在评论区留言,如有侵权请告知。
热点排行
推荐文章
立即申请>>