日常学习整理--注解和反射

@interface

使用此注解可以进行自定义注解,类名即为注解名。自定义注解中只能定义方法,所有方法都是无参无修饰符的,返回值则是基本数据类型、String、Classs、Annotation、Enum或者对应的一位数组。

方法通过default设置默认值。

注解的使用

单方法注解可以直接进行注解名(值)的方法来使用

多方法的使用方式是注解名(方法名=值,方法名=值…)

当方法中存在默认值时可以不显示赋值。

格式

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface 方法名 {

    //value为参数,此条语句的意义是定义一个字符串类型参数value,默认值为空

String value() default “”;

 

    boolean isAlive() default false;

}

 

@Retention

定义注解的保留级别。----即何时该使用该注解

他的取值是RetentionPolicy类型,存在三种取值

SOURCE:在代码编写阶段存在

CLASS:编译阶段注解保留在class文件中,VM运行时不需要保留

RUNTIME:编译阶段注解保留在class文件中,VM运行时仍保留注解

@Target

定义注解作用对象。----即何处该使用该注解

取值范围是ElementType类型,常用的类型

TYPE:类、接口(包括注解)、枚举

FIELD:成员变量

METHOD:成员方法

PARAMETER:方法参数

ANNOTATION_TYPE:注解的注解

 

@Documented

标记自定义注解应该被 javadoc工具记录。----即标记注解的说明

此元注解类型是无成员的

反射相关


类名


用途


Class类


代表类的实体,在运行的Java应用程序中表示类和接口


Field类


代表类的成员变量(成员变量也称为类的属性)


Method类


代表类的方法


Constructor类


代表类的构造方法

Class

获得类中属性

getDeclaredFields(): 获得所有属性的对象

getDeclaredField(String name): 获得某个属性对象

 

获得类中方法相关的方法

getDeclaredMethods() :获得该类所有方法

获得类中构造器相关的方法

getDeclaredConstructors():获得该类所有构造方法

获得类中注解相关的方法

getAnnotation(Class<A> annotationClass) : 返回该类中与参数类型匹配的公有注解对象

 

获得类相关的方法

getSimpleName(): 获得类的名字

 

isAccessible()setAccessible(true)

1.当isAccessible()的结果是false时不允许通过反射访问该字段

2.当该字段时private修饰时isAccessible()得到的值是false,必须要改成true才可以访问

3.所以 setAccessible(true);得作用就是让我们在用反射时访问私有变量

原文地址:https://www.cnblogs.com/haiyuan6688/p/11330006.html

时间: 2024-11-08 16:11:20

日常学习整理--注解和反射的相关文章

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

Spring?IOC设计原理解析:本文乃学习整理参考而来

Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. IoC容器的初始化 1. XmlBeanFactory(屌丝IOC)的整个流程 2. FileSystemXmlApplicationContext 的IOC容器流程 1.高富帅IOC解剖 2. 设置资源加载器和资源定位 3.AbstractApplicationContext的refresh函数载入

理解Android中的注解与反射

前言 最近一段时间在研究EventBus和Retrofit 的过程中,都遇到了注解这个概念.由于在学习Java的时候对这方面没有深入了解过,所以看起相关的代码来,总会有点不知其所以然,这里就注解和反射的使用做一下总结. 这里我们先从反射说起,了解了反射的意义及用法后,我们在看看注解的使用,最后叙述一下在Android开发中是怎样结合使用注解与反射. 反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法: 对于任何一个对象

【Spring基础学习】注解实现自动装配

在IOC容器中学习相关注解(常用) 1. @Autowired a.作用对象:(官网解释) 1. You can apply the @Autowired annotation to constructors: 2.you can also apply the @Autowired annotation to "traditional" setter methods: 3.You can also apply the annotation to methods with arbitra

TestNG学习-002-annotaton 注解概述及其执行顺序

此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试框架的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 言归正传,以下为 TestNG 常用的 annotation 及其释义,敬请参阅. @BeforeSuite:被此注解的方法将在所有测试运行之前运行该方法. @AfterSuite: 被此注解的方法将在所有测试运行之后运行该方法. @Bef

Java高级之注解、反射

Java的注解.反射等机制的产生,让动态代理成为可能,一般通过全限定名+类名,找到类,可以invoke它的构造方法以及其他方法,可以获取它的参数(Field)名称和值. 注解一般用在代码的注释上.代码审查上(有没有按标准写,比如inspect).代码注入(hook,asbectj),需要考虑的是,在何时注入(编译期还运行期) 反射一般用在动态将json和Object互相转化,执行相关底层代码,比如设置某个类的Accessible为false,防止别人hook修改 例:阿里的FastJson解析:

Android:日常学习笔记(8)———探究UI开发(5)

Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView的简单用法 public class MainActivity extends AppCompatActivity { private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr