一、注解Annotation

1、注解概述

注释+解释:不是程序本身,而是对其做出解释,并能被其它程序读取。

格式:@注释名(参数)

定义注解的关键字:@interface

2、常见的内置注解:

@Override重写覆盖方法

@Desperated已过时的,不推荐程序员使用的(但是使用也不会错)

@SuppressWarnings()镇压警告,用来抑制编译时的警告信息(不建议使用)

3、元注解

用来解释注解的注解,Java定义了四个标准的元注解:

@Target 描述注解的使用范围,即描述该注解可以在哪些地方(字段/类/方法...)使用

@Retention (建议定义为RUNTIME)描述需要在什么级别保存该注视信息(source<class<runtime),描述注解的生命周期

@Documented 描述是否将我们的注解生成在JAVAdoc中

@Inherited 表示子类可以继承父类的注解

4、自定义注解@interface(注意和接口interface的区别)

定义注解的参数:参数类型+参数名();

注意:

  • 参数名一定要加括号();
  • 如果定义的注解有参数,则使用该注解时必须要加参数,否则会报错(除非该参数定义了默认值);
  • 如果只有一个参数,一般定义参数名为value

二、反射机制Reflection

1、反射概述

反射使Java语言从静态变为了动态语言(在运行的时候可以动态改变自身结构,如javascript)。

反射机制能实现程序在运行时获取任意类的内部信息,并能直接操作任意对象的内部属性和方法。

主要API:

  1. java.lang.Class:代表一个类
  2. java.lang.reflect.Method:代表类的方法
  3. java.lang.reflect.Field:代表类的成员变量
  4. java.lang.reflect.Constructor:代表类的构造器

一个类在内存中只有一个class对象,一个类被加载后,类的整个结构都会被封装在class对象中。

2、Class类

  • 在Object类中定义了getClass方法,此方法将被所有的子类继承。
  • 这个方法返回值的类型是一个Class类,这个类是Java反射的源头。
  • 实际上所谓的反射:从程序的运行结果来看,就是可以通过对象反射求出类的名称

3、 Class类的常用方法

4、Class类特点

  • Class本身是一个类。
  • Class对象只能由系统建立对象。
  • 一个加载的类在JVM中只会有一个Class实例。
  • 一个Class对象对应的是一个加载到JVM中的一个.class文件。
  • 每个类的实例都会记得自己是由哪个Class实例所生成。
  • 通过Class可以完整地得到一个类中的所有被加载的结构。
  • Class类是Reflection的根源,针对任何你想动态加载、运行的类、唯有鲜活的相应的Class对象。

5、获取Class类的几种方式

  1. 若已知具体的类,可以通过类的class属性获取,该方法最为安全可靠,程序性能最高。Class clazz = Person.class;
  2. 若已知某个类的实例,调用该实例的getClass方法获取Class对象。                                Class clazz = person.getClass();
  3. 若一致一个类的全限定类名,且该类的类路径下,可通过Class类的静态方法forName()获取,可能抛出ClassNotFoundException异常。                                                                 Class clazz = Class.forName("com.demo.entity.User");
  4. 内置基本数据类型可以直接用类名.Type获得。
  5. 还可以利用ClassLoader获得。

6、有了Class对象,我们可以做什么

  1. 创建类的对象:调用Class对象的newlnstance()方法。

    • 类必须有一个无参的构造器。
    • 类的构造器的访问权限需要足够。
  2. 没有无参构造器,是否可以创建对象?可以
    • 通过CLass类的getDeclaredConstructor(Class…parameter)取得本类的指定形参类型的构造器。
    • 向构造器的形参中传递一个对象数组进去,里面包含了构造器中所需的各个参数。
    • 通过Constructor实例化对象。

Java基础学习13--注解和反射相关推荐

  1. java基础知识之注解、反射(一)

    前言 此博客为供个人学习总结备用,如有错误请指正. 正文 Annotation(注解) java自带的注解包含以下三个: 1.@Override 注解表示重写父类的方法 2.@Deprecated 声 ...

  2. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  3. Java教程,Java基础教程,2020年全新Java基础学习教程

    时代在变化,Java的知识也在不断的变化,今天分享一下2020年Java全新的基础教程,想学习Java的小伙伴,看这个!全新哦,涵盖了2019年新增知识,并且视频完全源于课堂实录哦! 本套JAVA课程 ...

  4. Java基础回归之注解Annotation【低仿ButterKnife实战篇】

    前言 书接上回,上回说到库里对战湖人三分10投0中,真真气煞我库也,这下把气全撒在鹈鹕身上,一口气轰下破纪录的13记三分. 上回说到Java基础回归之注解Annotation[基础篇],这回我们来真刀 ...

  5. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  6. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  7. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  8. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  9. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

最新文章

  1. 随机蕨(Random Fern)
  2. python学习 day2 (3月2日)
  3. JVM的监控工具之jinfo
  4. 线程安全面试题 java_Java面试题-线程安全
  5. centos7python命令_详解Linux Centos7下安装Python的方法
  6. 安装DNN时,数据库连接字符串的设置
  7. Umi 4 RC 发布
  8. 论文浅尝 - ICLR2020 | 知道什么、如何以及为什么:基于方面的情感分析的近乎完整的解决方案...
  9. 增值税发票的种类_以及税率---财务知识工作笔记001
  10. 序列最小最优化算法(SMO) SVM凸优化求
  11. Linux Kernel中irq handler, softirq handler 和 tasklet
  12. 三维点云处理技术二:三维点云表征概述
  13. 【2022年终总结】将哈佛大学Reich数据包中的352例SGDP样本进行Admixture分析的结果
  14. html5倒计时秒杀怎么做,如何让秒杀、活动倒计时更精确?
  15. ThinkPHP门面源码解析
  16. 原来在朋友眼里,我是一个闪闪发光的人
  17. C/C++实现简单打飞机小游戏【初版】
  18. java实现手机验证码功能
  19. 【20180128】【matlab】均值、标准差、方差、协方差、中值的求解
  20. 计算机基础1模拟题,计算机基础模拟题1(有答案)

热门文章

  1. 基于移动最小二乘法的曲线曲面拟合(python语言实现)
  2. 微信小程序 + Java + Mysql(登录 Demo)
  3. 在Vitis中编译Vitis AI Library应用
  4. 知名无人驾驶公司:文远知行内推
  5. 基于canvas的简易太阳系模型
  6. linux版本达芬奇,系统推荐RHEL8.5
  7. 别再花冤枉钱,微信小程序免300元认证费用详细教程,助力企业/个体低成本发展
  8. 【短视频运营】账号主页搭建 ② ( 视频封面 | 头像 | 背景图 )
  9. 金蝶云 python脚本调用管易接口
  10. 计算成像最新进展及应用