美文网首页Android实用技术
日更(十六)-Android-注解

日更(十六)-Android-注解

作者: Jlanglang | 来源:发表于2019-01-16 22:56 被阅读74次

瞎扯

记得刚学java的时候,看过注解,但完全不明白是啥玩意.弄不明白
后来写android.经常看到,
直到有次用aop切面,才真正明白是个啥东西.

注解的意义

在java里面.如果给一个class添加属性,功能
一般我们要么去实现某个接口,要么添加一个成员变量.
这样就能达到目的.

但是有时我可能不想这样.我想更自由一点..
怎么办呢.

注解!

注解的作用其实就是给类,方法,变量,添加额外的附加属性.
然后我再通过拿到这个附加属性,进行额外的操作.

举个例子:

我想给一个类,添加一个额外的附加属性.
当然我也可以实现某个接口,然后复写方法来实现,或者写一个抽象方法.但我觉得这样太麻烦.用注解来实现

定义一个注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Type {
    /**
     * 直接绑定itemclass
     *
     * @return
     */
    Class iClass() default Object.class;
}

用在类上

@Type (iClass = A.class)
public class Test{
}

public class A{
}

获取注解

  public  Class getTypeClass(Object itemData) {
            Class iClass = null;
            //判断是否使用了注解
            Type annotation = itemData.getClass().getAnnotation(Type .class);
            if (annotation != null) {
                iClass= annotation.iClass();
            }
        }
        return iClass;
    }

public void test(){
    Test test=   new Test ();//创建对象
    Class iClass = getTypeClass(test);//获取class
}

这样我们就能拿到注解中声明的Class了.

拿到Class能干吗?

能干的事多了.java的springMVC.几乎全是注解.原理大致如此.

比如通过class创建对象,

最简单的class.newInstance();

常用的注解

细心你就会发现,注解上还有注解.是干嘛的呢,

@Retention

  • RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
  • RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
  • RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

上面这段,别的地方抄来的.

我们实际使用时,多数只用到最后一个.也就是运行时还能获取

@Target

  • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
  • ElementType.CONSTRUCTOR 可以给构造方法进行注解
  • ElementType.FIELD 可以给属性进行注解
  • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
  • ElementType.METHOD 可以给方法进行注解
  • ElementType.PACKAGE 可以给一个包进行注解
  • ElementType.PARAMETER 可以给一个方法内的参数进行注解
  • ElementType.TYPE 可以给一个类进行注解,比如:类、接口、枚举

上面这段还是别的地方搬来的.

常用的就 :FIELD 方法 , TYPE 类 , METHOD 成员变量

注解的属性

记住几点就行,

    Class iClass() default Object.class;

    int value() default -1;

1.基础类型
2.class.
3.数组.
4.注解

default关键字可以不写,不过最好还是写上.作用就是设一个默认值

总结:

注解对于解耦来说,非常好.动态代理基本也是依赖注解来实现的.
通俗的讲,注解就是给一个东西打标记
有了标记.就能很方便的做处理.

也不算什么很高深的东西

您的喜欢与回复是我最大的动力-_-
交流群:493180098

相关文章

  • 日更(十六)-Android-注解

    瞎扯 记得刚学java的时候,看过注解,但完全不明白是啥玩意.弄不明白后来写android.经常看到,直到有次用a...

  • Android-自定义注解-反射基础

    Let’s go 上一章Android-自定义注解-注解基础-自定义注解我们基本上入门了这个注解的基本的东西,具体...

  • Android-注解

    java注解在 Android 中有两种应用方式,一种方式是基于反射的,在程序的运行期间获取类信息进行反射调用;另...

  • Android-注解

    1.解释: 注解只是一个标识(标记),没有具体的功能代码。 2.通过注解和反射实现findViewById 使用:

  • Android-自定义注解-注解基础-元注解

    乱七八糟的准备一下 学习这个之前,以前很多时候都是搜视频,博客啥的。现在我们尽量从官方文档入手,再配合一些别的进行...

  • Android-自定义注解-控件注解

    Give morning to myself 之前我们说了下反射的一些基础知识,基本已经可以来做一些简单的事情了。...

  • 日更(十三)-Android-线程

    瞎扯 感觉标题还是不要写挑战了,有点逗今天写的...其实我对线程也不是特别熟练.写写我自己的理解,不是写怎么用线程...

  • 出差

    【日精进第42天】 一、【学~勤学】 ①日常课诵 诵读《道德经》第十六章和注解一遍,《京瓷哲学》第十六条,《定位》...

  • Spring注解

    简书日更 第4篇: 重新学习 Spring注解 相关知识 什么是基于Java的Spring注解配置? 给一些注解的...

  • Android Studio 视图结构

    1、Tools->Android->Layout Inspector2、Tools->Android->Andro...

网友评论

    本文标题:日更(十六)-Android-注解

    本文链接:https://www.haomeiwen.com/subject/cbkvdqtx.html