java源码解析之 注解annotation

    今天记录一下注解相关的内容,算是比较轻松的一次。 


    注解是位于java的扩展包中,官方的提供的注解不是很多,但是扩展的注解还是挺多的,况且注解也已经成为了java语言的基本语法的一部分。在java.lang包有关于元注解的内容。 不过还是先来看看这边的内容



    上面是扩展包中generate注解的内容。

    以上是扩展包中resource注解的内容。 

    以上是扩展包中completion的内容。 

    以上是扩展包中resources的内容。 

    扩展包的注解基本看了,发现并没有什么收获。  但是它们有一个共同的特点,那就是都依赖于元注解。

    于是可以去看看元注解:

    三大元注解。

 

    这个注解是那三个注解中相对不好理解的。   现在在回头来看,大致意思有一点关键字 public  的意思。如public和private的区别。


    这个比较好理解。  Retention,字面意思为保留,保持的意思。   因此也好理解,它指明了一个注解的生命周期或者说作用域吧。



    以上是元注解target的内容。  他指明了注解所适用的对象,是作用域的意思。 

    接着是一些支撑的注解或者扩展的注解,但是由于它们位于lang包中,所以重要性自然是不容小觑。


    Retention的支持枚举类。 


    Target的支持枚举类。 


    标识为本地的一个资源。 由于面向对象的语言还是要依赖于面向过程语言的,面向对象处理全局,面向过程处理局部。 因此很重要。 



    相当于注解类中的Object。  但是是一个抽象类。 而非注解。 

    看完了这些,并没有发现注解是怎样被处理和执行的。  因此只能靠自己猜测:  因为注解成为了java语言基础语法的一部分,因此极有可能直接注解的逻辑直接被jvm处理,所以在类中并不好看到它的处理逻辑。   另外,之前看反射部分内容的时候,了解到属性和方法的顶级父类的为注解,这在某种层面应该也能发现有些问题,但是具体什么关系还得看代码。    第三,自从1970年左右,模块化的程序设计发展以来,之后的高级语言基本都有这一个特性,所谓的模块化,也就是可装卸的。  在java中来看,一个方法是一个模块,一个属性也可以是一个模块,因此先写哪个方法哪个属性,后写哪个方法哪个属性,并不会影响程序的运行。 注解也是同样的,它应该也有相关的一些理念来进行一些处理。 

    ok,以上是注解相关的内容,以后有机会可以深入,因为它实在是很强大。 晚安,好梦!



猜你喜欢

转载自blog.csdn.net/qq_36285943/article/details/80358479
今日推荐