Java注解

【数据挖掘】遗传算法原理浅析:什么是遗传算法?遗传算法的工作原理是什么? 遗传算法(Genetic Algorithm,GA),是进化算法的框架和核心。 各种进化算法有什么异同? - 及时物语的回答 - 知乎 https://www.zhihu.com/question/39152390/answer/901070749 阅读详情

1. Annotation简介

   JDK1.5开始,Java增加了对元数据(即类的组成单元数据)的支持,也就是注释(Annotation)。他是代码里做的特殊标记,这些标记可以在编译、类加载,运行时在不改变原有逻辑的情况下,被读取,并执行相应的处理,通过使用Annotation,程序员可以在源文件中嵌入一些补充的信息。Annotation类似于修饰符一样被使用,可以用于包、类、构造方法、方法、成员变量、参数、局部变量的声明。系统提供了一些Annotation,比较常用的有:@Override、@Deprecated、@SuppressWarnings。

@Override

    表示当前的方法定义将覆盖超类中的方法。

@Deprecated

    表示的是一个类或方法已经不再建议继续使用了,标记为已过时。

@SuppressWarnings

    表示关闭不当的编译器警告信息。

@Documented

    此注解表示的是文档化,可以在生成doc文档时添加注解

@Target

    表示的是一个Annotation的使用范围,@Target的作用范围由ElementType决定,可以取值为TYPE(使用范围为类、接口或枚举)、FIELD(使用范围为成员变量)、METHOD(使用范围为方法)、PARAMETER(使用范围为参数上)、CONSTRUCTOR(使用范围为构造函数)、LOCAL_VARIABLE(使用范围为局部变量)、ANNOTATION_TYPE(使用范围为Annotation中)、PACKAGE(使用范围为包中)。

@Retention

    @Retention表示的是Annotation的时间作用范围,而Retention指定的范围由RetentionPolicy决定,RetentionPolicy指定了三种范围: SOURCE、CLASS、RUNTIME。SOURCE代表注解在源程序中存在、CLASS代表注解在class文件中存在、RUNTIME代表注解在运行时存在。

@Inherited

   @Inherited表示Annotation是否可以被其子类继承下来。加上@Inherited表示允许被子类继承下来。

2. 自定义注解

    那么如何自定义Annotation呢?简单来说就是以下3个步骤:

1)编写注解

2)在类上应用注解

3)对应用了注解的类进行反射操作。

    自定义Annotation的语法如下:

    访问控制权限 @interface  Annotation名称{}

    例如:public @interface MyAnnotation{}

2.1  在Annotation中定义变量

public @interface MyAnnotation {
	
	//定义变量
	public String name();
	public String info();
}

    定义变量后,调用此Annotation时必须设置变量值:

@MyAnnotation(name = "oner.wv", info = "cls")
public class Person {

}


     可以通过default指定变量默认值,指定了以后在使用此Annotation时可以不用在设置变量值:

public @interface MyAnnotation {

	// 定义变量
	public String name() default "oner.wv";
	public String info() default "cls";
}

@MyAnnotation
public class Person {

}


    定义一组变量的数组,接收一组参数


public @interface MyAnnotation {

	// 定义变量的数组,接收一组参数
	public String[] grade();
}


@MyAnnotation(grade = { "one", "two", "three" })
public class Person {

}


    可以使用枚举限制变量的取值范围

public @interface MyAnnotation {

	public Color[] color();
}


2.2  反射与Annotation

     一个Annotation真正起作用,必须结合反射机制。

Color.class


package com.oner.wv;

public enum Color {
	RED,GREEN,BLUE
}

MyAnnotation.class

package com.oner.wv;

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

/**
 * 自定义注解
 * 
 * @author Oner.wv
 *
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

	// 定义变量
	public String name() default "oner.wv";

	public Color color();

	// 定义变量的数组,接收一组参数
	public String[] grade();

}


Person.class

package com.oner.wv;

@MyAnnotation(grade = { "one", "two", "three" }, color = Color.BLUE)
public class Person {

	private String name;
	private Color color;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Color getColor() {
		return color;
	}

	public void setColor(Color color) {
		this.color = color;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", color=" + color + "]";
	}

	@Deprecated
	public void print() {
		System.out.println("person:" + name);
	}
}

测试类:

Test.class

package com.oner.wv;

import java.lang.annotation.Annotation;

public class Test {
	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException {
		Person p = new Person();
		p.print();

		Class personClass = Class.forName("com.oner.wv.Person");
		// 通过反射得到Annotation
		Annotation a = personClass.getAnnotation(MyAnnotation.class);
		// 强制转换为MyAnnotation
		MyAnnotation ma = (MyAnnotation) a;

		// 获取自定义注解的变量
		String name = ma.name();
		Color color = ma.color();

		// 通过反射得到Person类的实例
		Person p1 = (Person) personClass.newInstance();
		p1.setName(name);
		p1.setColor(color);

		System.out.println(p1);
	}
}

     运行结果:



   

实战!在 AMD RX 9070 XT (16G) 上使用原生 Windows ROCm 7.1 部署 ComfyUI + Z-Image-Turbo 本文详细介绍了如何在Windows系统下为AMD Radeon RX 9070 XT显卡配置Z-Image-Turbo AI绘图环境。主要内容包括:安装VS Build Tools和最新显卡驱动,配置Conda Python 3.12环境,安装ROCm 7.1.1 SDK及PyTorch适配版本,部署ComfyUI可视化界面。重点解决了AMD显卡在AI绘图中的适配问题,通过--use-split-cross-attention参数优化显存使用,最终成功搭建了可在消费级16G显存设备上运行的AI绘图环境 阅读详情

相关推荐

FastApi教程

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

小石潭记丶 1560

JAVA实现自定义注解

该注解功能最为强大,其所标注的方法用于编写包裹业务模块执行的代码,通知的第一个参数必须是 ProceedingJoinPoint 类型。,@Pointcut切点表达式非常丰富,可以将 方法(method)、类(class)、接口(interface)、包(package) 等作为切入点,非常灵活,常用的有@annotation、@within、execution等方式,上面的示例使用的是@annotation方式,意思就是说被Spring扫描到方法上带有@annotation中的注解 就会执行切面通知。

weixin_46155048的博客 1万+

浮点数加法器设计

一.设计内容及其要求 内容 根据浮点数的运算规则和IEEE754标准,实现浮点数的加法运算器。 要求: 浮点数格式:符号位1位,阶码8位,尾数23位 要求该实验能完整的体现浮点数的运算的五个步骤:对阶、尾数求和、规格化、舍入(要求使用对偶舍入)、溢出判断。 二.基本要素 浮点数 浮点数即实数,实数是所有有理数和无理数的集合。它之所以被称作浮点数,是因为小数点在数中的位置并不是固定的。一个浮点数值分为两部分存储:数值以及小数点在数值中的位置。 计算机中的浮点运算的计算结果一般是不确定的,一块芯片的浮点运算

Phoenix_ZengHao的博客 1万+

【Java】自定义注解

①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意思,子类重写了父类的方法,但是改动了方法名,所以报错。public Stringg name ="张三”@0verrideinterface是用来声明一个注解的,格式public @interface 注解名{定义内容};其中的每一方法实际上是声明了一个配置参数;方法的名称就是参数的名称;

m0_75260099的博客 1368

从零实现高精度手势检测:OpenCV+MediaPipe模型移植实战(2)(附c++完整代码)

上篇已经介绍了手掌检测的方法。本章将在手掌检测的基础上,完成手指关节的检测。

qq_37160641的博客 2664

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

前程算法屋的博客 1432

JAVA注解

本文将向你介绍J2SE5.0中的新特性之一:注解。本文将从什么是注解;J2SE5.0中预定义的注解;如何自定义注解;如何对注解进行注解以及如何在程序中读取注解5个方面进行讨论。     一、什么是注解     说起注解,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE

rj042的专栏 1万+

① Django手把手从零开发个人博客-前言

手把手教你从零开始玩转手把手教你从零开始玩转Django,全面学习并了解django的运行机制、开发全流程及线上部署。Django,全面学习并了解django的运行机制、开发全流程及线上部署。 专栏介绍 本套教程遵循Django的设计思想,开门见山,快速切入主题,拒绝拖沓,在实战中学习每一个知识点,提高学习的趣味性以及个人成就感,并且能快速将所学运用到实际项目中。 将从零手把手带着你一步步完成博客的每一个功能,通过实现博客文章列表页、文章详情页、作者页面等功能来学习和了解django的视图查询模块相关知.

轻编程的博客 513

java注解怎么写_java注解

写在前面现在的java主流框架中,注解无处不在,因此我们完全有必要搞明白注解到底是什么。如何理解注解,它到底是怎么起作用的。注解的定义java是这样定义注解的:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。什么又是元数据的呢?说白了就是描述数据的数据,既然注解被称为元数据,具有描述作用,那么我们是不是可以把注解理...

weixin_42476912的博客 2243

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。

吻等离子的博客 3355

PyCharm 2024最新版图文安装教程(python环境搭建+PyCharm安装+运行测试+汉化+背景图设置)

PyCharm 2024新版图文安装教程(python环境搭建+PyCharm安装+运行测试+汉化+背景图设置)

Code_流苏:在代码中寻诗意,在实践中觅真知 4万+

java 注解 entity_Java 注解

一. 简介注解是java5的新特性。注解可以看做一种注释或者元数据(MetaData),可以把它插入到我们的java代码中,用来描述我们的java类,从而影响java类的行为。二. 基本语法1. 注解的使用形式:一个java注解由一个@符后面跟一个字符串构成,类似于这样:@Entityjava注解中一般包含一些元素,这些元素类似于属性或者参数,可以用来设置值,比如我们有一个包含两个元素的@Enti...

weixin_42384743的博客 2348

基于C++和Qt开发IEC104规约主站调试软件(第二章)

本章节主要讲解iec104主站软件界面设计和从站的连接功能以及部分功能代码的展示。

半青年的博客 858

java注解的使用及常用注解

java注解的使用及常用注解

qq_42003527的博客 2342

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java 注解 id_java注解

java注解:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。注解理解的前提:我认为注解就是标签它是在 Java SE 5.0 版本中开始引入的概念,就如同java中的 class和interface说到这个就不得不说注解中的基础元注解元注解: 元注解是可以...

weixin_42547335的博客 1297

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java注解与元注解

使用@interface关键字来定义注解,注解中的方法称为注解元素,注解元素可以有默认值。// 定义一个简单的注解元注解是用于注解其他注解的注解,它们可以控制注解的使用范围、生命周期等。Java 提供了几个元注解,常用的有@Retention@Target和@Inherited。

dsq_MaDing的博客 683

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java注解以及自定义注解

Java注解以及自定义注解

YIYIYI 1968

java 注解和 重复注解

1、什么是java注解 Annotation(注解)是JDK5.0及以后版本引入的一个特性。注解是java的一个新的类型(与接口很相似),它与类、接口、枚举是在同一个层次,它们都称作为java的一个类型(TYPE)。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它的作用非常的多,例如:进行编译检查、生成说明文档、代码分析等。 2.jdk提供的3个基本注解

u012964143的专栏 3503

java 注解 default_java注解

元注解:元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:1.@Target,2.@Retention,3.@Documented,4.@Inherited这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和...

weixin_39889329的博客 1858

JAVA之注解

Java注解(Annotation)又称Java标注,是JDK5引入的一种注释机制。 Java语言中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。

遇安的博客 3804

java 注解 数组_Java注解,就是那么简单

深入理解注解1、基本介绍2 内置注解2.1@Deprecated注解2.2@Override注解2.3@SuppressWarnings注解3、元注解简介3.1@Target3.2@Rentention3.3@Documented3.4@Inherited4、自定义注解5、获取注解中的参数值5.1参数值是基本类型5.2参数值是对象1、基本介绍基本概念:注解,顾名思义,就是对某一事物进行添...

weixin_34017915的博客 4110
上一篇: Hadoop—HDFS的Java客户端编程
下一篇: XML基础(上)
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值