Android下自己实现依赖注入框架

博客介绍了注解的概念,注解是对程序加的标签,本身对源代码无影响,其对应操作通过APT执行。还阐述了Android下注解的类型,包括Java注解、Android注解和自定义注解,同时说明了自定义注解的声明形式、作用目标和保留策略等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在博客开始之前,我们先来介绍几个东西。

  1. 什么是注解?
    摘抄一下Google官方给的解释:

    An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effect on the operation of the code they annotate.
    注解简而言之就是对程序加上的一种标签,这个标签本身对源代码没有任何影响,我没有扯淡,注解本身对源代码确实没任何影响,实际上,注解所对应的操作是通过**APT(Annotation Processing Tool)**对程序中的注解进行检测进而执行的,比如检测到@Deprecated注解时,APT认为这个函数已被淘汰,于是APT会在函数上加上删除线,提醒开发者此函数已过时。

  2. Android下的注解类型主要包括哪几类?
    Android下注解主要包括三类:

    1. Java注解,包括@override、@Deprecated、@SuppressWarnings、@SafeVarargs(Java7新增)、@FunctionalInterface(Java8 新增),具体参考这篇博客:秒懂 Java注解类型(@Annotation)
    2. Android注解,需要添加Support Annotation Library依赖,具体可以参考这里:Support Annotation Library介绍及使用
    3. 自定义注解,Android下支持自定义注解,形式如下:
package com.mystudy.annotationtest;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Person {
    String name() default "";
    String sex() default ""; 
}

自定义注解需要以@interface关键字进行声明,并且方法体内的所有方法(这里是name()和sex()方法)都不能含有参数,只能用publicabstract这两个修饰符,默认采用的是public,且返回类型必须是基本类型,String, Class, annotation, enumeration 或者是他们的一维数组。
@Target:定义注解的作用目标

@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包

@Retention: 定义注解的保留策略

@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到

所以这里我们写的自定义注解就是作用于方法且存在于字节码文件中,运行时可以通过反射拿到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值