黑马程序员_【总结】_ 高新_4_注解 Annotation

leetcode不会-Leetcode-Java:Leetcode-Java leetcode 不会 Leetcode Solutions in Java Linked List Linked List Cycle Given a linked list, determine if it has a cycle in it. public static boolean hasCycle(ListNode head) 快慢指针法,块指针从head.next开始,慢指针从head开始,快指针每次移动两格,慢指针每次移动一格, 若两者能够相遇,则有环,否则,若在这个过程中检测到了链表尾,则无环。 Reverse Linked List Reverse a linked list. Challenge: Reverse it in-place and in one-pass A linked list can be reversed either iteratively or recursively. Could you implement both? public static ListNode reverseList(ListNode head) 三个指针,依次往后 立即下载
注解 Annotation


---------- android培训 、 java培训、期待与您交流! ---------- 

---------------------------------------------------------------------------------------------------------------------------------------------
注解
1、一个注解,就是一个类,相当于是一个标记,什么样的标记,干什么样的事儿。
2、常见的注解
 @SuppressWarnings 取消显示指定的编译器警告。
 @Deprecated 过时,或者通常是因为它很危险或存在更好的选择。
 @Override 一个方法声明打算重写超类中的另一个方法声明。
3、@Retention 一个注解的声明周期有3个阶段
1、Java源文件--->RetentionPolig.SOURCR   注解只保留在源文件中
2、class文件--->RetentionPolig.CLASS    注解只保留在class文件中
3、内存中的字节码--->RetentionPolig.RUNTIME  注解只保留在内存中
4、 @target  表示自定义注解应用的范围
  @Target(ElementType.METHOD)   ---  方法上
  @Target(ElementType.TYPE)     ---  类上
5、注解可标 声明在包、类、字段、方法、局部变量、方法参数等的前面
用来对这些元素进行说明,注释。它的作用非常的多
例如:进行编译检查、生成说明文档、代码分析等。
6、要实现一个自定义注解,必须通过 @interface 关键字来定义。且在 @interface 之前,
需要通过元注解来描述该注解的使用范围( @Target )、生命周期( @Retention )
6、注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类。
7、注解大多是用做对某个类、方法、字段进行说明,标识的。
以便在程序运行期间我们通过反射获得该字段或方法的注解的实例,
来决定该做些什么处理或不该进行什么处理  
8、注解的使用分为三个过程: 定义注解-->声明注解-->得到注解
(下详细)
9、注解很重要。
-------------------------------------------------------
一个注解,就是一个类  注解相当于是一个胸牌
 【注解非常重要,能感觉到其作用不仅仅源于注释,和我所学到的下面的知识,
当注解结合反射技术肯定能让我做太多的事情】
 
 @SuppressWarnings       取消显示指定的编译器警告。
 @Deprecated                     过时,或者通常是因为它很危险或存在更好的选择。
 @Override                            一个方法声明打算重写超类中的另一个方法声明。
 
 注解 相当于一个标记,加了注解就等于搭上了某种标记
没加,则等于没有某种标记,以及欧,java 编译器开发工具和其他程序可以用发射来了解
你的类及各种元素上有无任何标记,看你的 有什么标记,就去干相应的事,
 
 标记可以声明在包、类、字段、方法、局部变量、方法参数等的前面
用来对这些元素进行说明,注释。它的作用非常的多
例如:进行编译检查、生成说明文档、代码分析等。

注解可以有哪些成员
注解和接口相似,它只能定义final 静态属性和公共抽象方法。
注解的方法
1.方法前默认会加上public abstract
2.在声明方法时可以定义方法的默认返回值。
列如
	String color() default "blue";		>>
		public abstract String color() default "blue";
	String[] color() default {"blue", "red",......}		>>
		public abstract String[] color() default {"blue", "red",......}
注解的使用分为三个过程。


定义注解-->声明注解-->得到注解


a. 定义注解(参照上面的注解定义)
b. 声明注解
1. 在哪些元素上声明注解
如果定义注解时没有指定@Target 元注解来限制它的使用范围,
那么该注解可以使用在ElementType 枚举指定的任何一个元素前。
否则,只能声明在@Target 元注解指定的元素前。
一般形式:
@注解名()
2. 对注解的方法的返回值进行赋值
对于注解中定义的每一个没有默认返回值的方法,
在声明注解时必须对它的每一个方法的返回值进行赋值。
一般形式:
@注解名(方法名=方法返回值,......)
如果方法返回的是一个数组时,那么将方法返回值写在{}符号里
@注解名(方法名={返回值1,返回值2,......},......)
3. 对于只含有value 方法的注解,在声明注解时可以只写返回值。


c. 得到注解
对于生命周期为运行期间的注解,都可以通过反射获得该元素上的注解实例。
1、声明在一个类中的注解
可以通过 该类Class 对象的 getAnnotation 或getAnnotations 方法获得。
2、声明在一个字段中的注解
通过 Field 对象的getAnnotation 或getAnnotations 方法获得
3、声明在一个方法中的注解
通过 Method 对象的getAnnotation 或getAnnotations 方法获得
//	注解类
	@interface A{}
// 应用了注解类 -- 的类
		 @A
		 class B{}
//对 --应用了注解类  --的类
	 	class C{
			B.class.isAnnotationPresent{
	 			A.class;
	 		}
	 		A a = B.class.getAnnotation(A.class);
	 
	 	}
【】1、 生命周期
一个注解的声明周期有3个阶段对应@Retention  元注解
1、Java源文件 -------------->RetentionPolig.SOURCR   注解只保留在源文件中
2、class文件 -------------->RetentionPolig.CLASS    注解只保留在class文件中
3、内存中的字节码   -------------->RetentionPolig.RUNTIME  注解只保留在内存中



思考:      这三个注解在什么阶段
 @SuppressWarnings 
 @Deprecated 
 @Override
 
 【】2、 类型     Type
1、class      2、interface      3、enum     4、@Interface
 他们有点像类,但又不是类,  他们是java 中的一个类型
 
 【】3、适用范围
 @target 元注解,表示自定义注解应用的范围
 @Target(ElementType.METHOD)   ---  方法上
 @Target(ElementType.TYPE)     ---  类上
 
 为注解增加属性
   设值的时候,当作方法。   赋值的时候, 当作属性,调用时 是方法
public @Interface ItcastAnnotation{
   		String color();
	}
   @ItcastAnnotation(color: "red");

public class AnnotationTest{
	public static void main(String []args){
		if(AnnotationTest.class.isAnnotationPresent(ItacaseAnnotation.class)){
			ItcastAnnotation ia = ()AnnotationTest.getA
		}
	}
} 
要实现一个自定义注解,必须通过 @interface 关键字来定义。
且在 @interface 之前,需要通过元注解来描述该注解的使用范围( @Target )、生命周期( @Retention )
【自定义注解】
【A】自定义注解类 
//
//1、通过注解设定 本注解 处于RUNTIME  运行时的阶段
@Retention(RetentionPolicy.RUNTIME)
//1-2  通过 @interface  自定义一个注解
public @interface ItcastAnnotation {
	// 为注解添加 属性
	
	//2   添加一个color    并通过 default 设定  缺省值(即默认的值)
	String color() default "blue"; 
	//3   value 比较 特殊,单独时,可以直接写值 ,不用 value=""
	String value();//
	//4  添加一个    数组类型 没有  缺省值
	int [] arrayAttr();
	//5  枚举 类型  之前 专注总结 枚举的时候,写过的一个高级枚举:
	EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;
	//6 注解类型  注解中的注解     设定  缺省值
	MetaAnnotation annotationAttr() default @MetaAnnotation("mmmmmmmm");
	//7  添加一个 Class字节码文件
	Class className();
}
【B】 ItcastAnnotation 的测试类 
//1、使用自定义注解 @ItcastAnnotation,其中有很多属性   
@ItcastAnnotation(annotationAttr=@MetaAnnotation("aaaaa"),value = "abc",arrayAttr=2,className=String.class)
public class AnnotationTest {
	
	//2				 特殊属性(方法) value
	//@ItcastAnnotation("abc")//当注解方法只有value、或者其他都有缺省时,可以这么写
	public static void main(String[] args) throws Exception
	{ 
		// TODO Auto-generated method stub
		//3-1、过时的方法
		System.runFinalizersOnExit(true);
		//3-3、设置方法过时
		sayHelle();
		//4-1、(证明注解也是一个类)。
		//      先得到AnnotationTest字节码                           检测是否有注解               
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
			//4-2  既然注解是一个类,  创建一个对象
			ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
			//System.out.println(annotation);
			//4-3 color 在应用注解的时候没有设值  所以这里会引用 缺省值
			System.out.println("color:   "+annotation.color());
			System.out.println("value:   "+annotation.value());
			
			System.out.println("arrayAttr.length:  "+annotation.arrayAttr().length);
			//4-4  把arrayAttr  进行转换 ,并打印
			List<int []> lists = Arrays.asList(annotation.arrayAttr());
			
			for(int [] list : lists){
				for(int li : list){
					System.out.print(li+"   >");
				}
			}
			 //4-5  枚举 类型  之前 专注总结 枚举的时候,写过的一个高级枚举
			System.out.println("\nEnumTest.TrafficLamp:  "+annotation.lamp().nextLamp().name());
			
			//4-6   注解中的  注解
			System.out.println("annotationAttr.value:   "+annotation.annotationAttr().value());
		}
	}
	//3-2、设置方法过时
	@Deprecated
	public static void sayHelle(){
		System.out.println("唉,哥辉煌的时代已然过去鸟。");
	}
注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类。

注解大多是用做对某个类、方法、字段进行说明,标识的。
以便在程序运行期间我们通过反射获得该字段或方法的注解的实例,
来决定该做些什么处理或不该进行什么处理  





---------------------------------------------------------------------------------------------------------------------------------------------
---------- android培训、 java培训、期待与您交流!----------


----------------------------------------------
Potato-leetcode-solution-java:leetcode解题大全 leetcode-java java leetcode解体代码与思路 #无法开始编译:未为模块指定输出路径。解决 idea运行提示错误:java:无效的源发行版:1.9 #项目升级到maven工程 源1.5中不支持diamond运算符 错误:Java:编译失败:内部Java编译器错误 git push web一次push到两个仓库设置 修改本地代码中.git / config文件,添加或修改列表如下: [remote "web"] url = https://git.oschina.net/xxx/xx.git url = https://github.com/xxx/xx.git 立即下载

相关推荐

TCP Reno/CUBIC 拥塞控制算法对比:从 Tahoe 到 BBR 的 4 种核心策略演进

本文深入解析了TCP拥塞控制算法的演进历程,从经典的Tahoe、Reno到现代的CUBIC和BBR,详细对比了4种核心策略的实现机制与性能差异。通过分析拥塞窗口、流量控制等关键技术,揭示了不同算法在高带宽延迟网络中的优化方向,为网络协议栈优化提供理论依据和实践指导。

weixin_33725239的博客 440

java面试必备--JAVA基础篇(三) 之 面向对象

相信很多同行小伙伴会因为许多原因想跳槽,不论是干得不开心还是想跳槽涨薪,在如此内卷的行业,我们都面临着“面试造火箭,上班拧螺丝”的局面,鉴于当前形势博主呕心沥血整理的干货满满的造火箭的技巧来了,本博主花费2个月时间,整理归纳java全生态知识体系常见面试题!总字数高达百万! 干货满满,每天更新,关注我,不迷路,用强大的归纳总结,全新全细致的讲解来留住各位猿友的关注,希望能够帮助各位猿友在应付面试笔试上!当然如有归纳总结错误之处请各位指出修正!如有侵权请联系博主QQ1062141499! ...

用键盘与世界交流 1135

时序基础模型Timer-S1:十亿参数如何革新时间序列预测

时间序列预测是数据分析与机器学习中的核心任务,旨在基于历史数据预测未来趋势。其原理在于捕捉数据中的趋势、周期性和季节性等时序依赖关系。这项技术的价值在于赋能业务决策,广泛应用于金融风控、能源管理、物联网监控和供应链优化等关键场景。传统方法依赖针对特定任务的专用模型,面临泛化能力弱和开发成本高的挑战。本文聚焦的时序基础模型,通过在海量跨领域数据上进行预训练,学习时序通用模式,并结合十亿级参数带来的强大容量,实现了性能的显著突破。这种范式转变,使得模型能够像“全科医生”一样,通过少量数据微调即可快速适应新任务,

weixin_29164843的博客 269

java 1.6 性能_Java JDK1.5、1.6、1.7新特性整理

一、Java JDK1.5的新特性1.泛型:List strs = new ArrayList();//给集合指定存入类型,上面这个集合在存入数据的时候必须存入String类型的数据,否则编译器会报错2.for-each例如上面这个集合我们可以通过for-each遍历,这样更加简单清晰for(String s : strs){System.out.println(s);}注意:使用for-each...

weixin_32251071的博客 577

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

FPGA—ZYNQ_BD Block Design学习(一)

1.第一步:打开Vivado软件,创建或打开一个工程。2.第二步:在Block Design中添加arm核心,并将其配置为IP核。3.第三步:配置arm核心的外设信息,如DDR接口、时钟频率、UART接口等。4.第四步:完成Block Design中的模块互联,生成PL端的比特流。 5.第五步:导出PS端的硬件信息,包括arm IP核的外设、速度、引脚和地址等信息。1创建bd 需要有ddr以及uart和时钟配置外设io口,这里就是zynq的管脚规定好的,根据原理图用哪个个勾选哪一个。 对外设uart的配

m0_58129662的博客 1028

Java 基础小结

足以面对常规笔试和面试

学哥斌的博客 635

Robocup3d

一、 比赛介绍 RoboCup 仿真比赛是一个能为多智能体系统和模拟智能进行研究、教育的工具。比赛是在一个标准的计算机环境中进行的,提供了一个完全分布式控制、实时异步多智能体环境。通过这个平台,可以测试各种理论、算法和Agent体系结构。在实时异步、有噪声的对抗环境中,研究多智能体的合作对抗问题。当然,仿真组的比赛使用的机器人并非是真的机器人。一个机器人是一个Agent, 它拥有自己的大脑,

zhanghe2775115的专栏 7265

2021-08-27 Java 9 新特性 - yahya

Java 9 新特性 Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。

yahya·小阳的博客 264

AGX Orin 部署PyTorch与Torchvision 2026避坑指南

本文提供了2026年在AGX Orin开发板上部署PyTorch与Torchvision的详细避坑指南。针对ARM64架构和JetPack 6.2系统,重点解决了Python 3.10环境配置、官方wheel包安装、torchvision源码编译等关键步骤,并分享了常见问题解决方案和性能优化技巧,确保深度学习环境稳定运行。

sky77的博客 752

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1870

关于IDEA报错:Error:java: 错误: 不支持发行版本 5

最近使用idea工具在maven项目中运行时,报错Error:java: 错误: 不支持发行版本 5 针对这个错误,其实可能是你在编译项目代码时使用的jdk版本与本地的版本不同导致的,可以在idea中进行设置,其中有两个地方需要查看,具体如下: 第一个地方: 1.点击左上角File,然后setting 2.找到javaComplier,我本地的jdk版本为14,所以将Projectbytecodeversion和Target bytecode ve...

linkunpeng_的博客 813

16、Cortex-M7处理器:高性能与复杂架构解析

本文深入解析了Cortex-M7处理器的高性能架构与复杂设计,涵盖AHB总线矩阵优化、超标量六阶段双发射流水线、增强型分支预测单元及双精度浮点支持。重点介绍了其独特的内存层次结构,包括指令与数据TCM、片上缓存和AXI-M 64位总线接口,提升系统并行性与执行效率。通过实际测试对比M4与M7性能差异,并演示如何将代码与数据定位到TCM以实现零等待运行。同时阐述了缓存机制的工作原理及其对系统性能的影响,为开发者提供全面的性能优化指导。

a1b2c3d的博客 126

黑马程序员:注解(Annotation)介绍

注解|注释(Annotation),每个注解都对应一个类 1.@SuppressWarnings 压缩警告注解 示例: System.runFinalizersOnExit(true); //该方法已过时(deprecated) 当含有这条语句的代码被编译后,javac会提示注意信息。若: @SuppressWarnings System.runFinalizersOnExit(tru

Java notes 1229

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

黑马程序员_注解(Annotation)

---------------------- android培训、java培训、期待与您交流! ---------------------   今天谈一谈jdk1.5中出现的比较重要的新特性:注解(Annotation),未来的开发模式都是基于注解的,现在的EJB,Spring,以及Struts2中部分的都是基于注解的。因此注解的使用是一种趋势。 Java为我们提供了几个基本的注解:@S

windkisshao的专栏 430

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java高新_注解(黑马程序员)

------- android培训、java培训、期待与您交流! ---------- 1.注解Annotation的工作原理: jdk1,.5中提供了注解功能,允许开发者自定义和使用自己的注解类型。Annotation并不直接影响代码的语义,但是他可以被看做是程序员的工具,他反过来对程序的语义有所影 响! 注解语法比较简单除了@符号使用,其他和java一样。java中内置了3种注解,

movaxbxcxdx的专栏 451

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

黑马程序员__annotation注解

--------------- android培训、java培训、期待与您交流!--------------- 注解:        注解相当于是一个标记,注解本身也是个特殊的类,当我们在用注解的时候,就是在为这个类创建了一个实例,注解的工作就是向编译器(或是IDE工具)

liu654011945的专栏 912

黑马程序员_注解

---------------------- android培训、java培训、期待与您交流! ----------------------   注解Annotation是JDK5.0的一个新特性 ,一个注解就是一个类。 三种基本内置注释: 1、@Suppresswarnings 它的参数有: deprecation:使用了过时的类或者方法时的警告 unchecked:执行了未检

bianbianren487的专栏 266

黑马程序员——Java注解(Annotation)

黑马程序员——Java注解(Annotation) ---------------------- android培训、java培训、期待与您交流! ---------------------- 一、Annotation概述 从Java5.0版发布以来,5.0平台提供了一个正式的Annotation功能:允许开发者定义、使用自己的Annotation类型。此功能由一个描述Annoati

冯焱 743

黑马程序员-注解

---------------------- android培训,java培训、期待与您交流! ----------------------   注解 Annotation注解: 注解是jdk1.5的新特性,它相当于一种标记,在程序中加了注解就等于为程序打上某种标记,没加,则等于没有某种标记,以后javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上是否有标记,就会

qq505525372的专栏 462

黑马程序员-注解(Annotation)

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------

huohacker的专栏 1074

黑马程序员—高新技术之Annotation注解学习

ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------/p>           java 1.5的新特性,注解。           注解类:Annotation 顾名思义:注解是对Java中程序进行说明。 小知识:main方法可以不属于当前那个类。 *要养成一个良好的编码习惯,例如AnnotationTest,注意动

u012573367的专栏 657

黑马程序员——高新技术——内省、注解、类加载器

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

xiaoyaodaia的专栏 711

黑马程序员—注解Annotation

--------------------- android培训、java培训、期待与您交流! ---------------------- 注解Annotation是JDK1.5版本的新特性,给编译器、class或运行时环境做一些说明。注解本身是一种与class平级的类型,其他与class平级的类型还有枚举和接口。 1.注解的使用 注解可以用在类,方法,属性等前面

Joyep 360

黑马程序员-注解(Annotation)

从JDK1.5之后,增加了Annotation注解,注解是代码里的特殊标记,在编译、类加载、运行时被读取,并执行相应的处理。 三个基本的Annotation: @Override :限定重写父类方法 @Deprecated:标记已过时 @SuppressWarnings:抑制编译器警告 自定义Annotation使用@interface关键字,格式如下 public @interfac

wumuzhong的专栏 509
上一篇: 黑马程序员_【总结】_ 高新_5_类加载器
下一篇: 黑马程序员_【总结】_ 高新_6_代理类(高新end)
Hnotify
博客等级 码龄13年 3粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值