All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.flyjingfish.android_aop_annotation.AopMethod.kt Maven / Gradle / Ivy

package com.flyjingfish.android_aop_annotation

import androidx.annotation.RequiresApi
import java.lang.reflect.Parameter
import java.lang.reflect.Type

interface AopMethod {

    /**
     * @return 切点方法名称
     */
    val name: String

    /**
     * @return 切点方法参数所有的变量名
     */
    val parameterNames: Array

    /**
     * 如果切点函数是 suspend 函数并且返回类型是基本数据类型,会自动转化为包装类型
     *
     * @return 返回值类型,抹除了泛型信息
     */
    val returnType: Class<*>

    /**
     * 如果切点函数是 suspend 函数并且返回类型是基本数据类型,会自动转化为包装类型
     *
     * @return 返回值类型,包含泛型信息
     */
    val genericReturnType: Type

    /**
     * @return 返回方法所在的类 class 对象
     */
    val declaringClass: Class<*>

    /**
     * @return 方法参数的所有类型信息,抹除了泛型信息
     */
    val parameterTypes: Array>

    /**
     * @return 方法参数的所有类型信息,包含泛型信息
     */
    val genericParameterTypes: Array

    /**
     * @return 返回一个整数,该整数是描述字段、方法或构造函数的修饰符的位掩码
     */
    val modifiers: Int

    /**
     * @return 返回此方法上的所有注解的数组
     */
    val annotations: Array

    /**
     *
     * @param annotationClass 指定类型的注解的 class 对象
     * @return 返回此方法上指定类型的注解
     * @param  具体泛型信息
     */
    fun  getAnnotation(annotationClass: Class): T?

    /**
     * @return 返回方法的参数信息的数组
     */
    @get:RequiresApi(api = 26)
    val parameters: Array

    /**
     * 返回的长度和参数个数一样,如果参数上没有注解,则对应下标位置的数组长度为0
     *
     * @return 返回方法参数上注解
     */
    val parameterAnnotations: Array>
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy