Java注释的完整介绍
Java中的注释是一种特殊的Java构造,用作装饰性语法元数据,用于源代码中使用的类元素,以在代码转换期间提供特殊信息以指导java解释器。
Java中的注释是什么?
注释用于表示与源代码中使用的类,接口,方法或者字段相关的语法元数据,以及Java解释器和JVM使用的一些添加信息。
在本文中,我们将讨论以下概念。
为什么我们需要注释?
编译指令
内置注释(例如@ Override,@ Deprecated和@SuppressWarnings)为解释器提供了有关代码执行的信息。
例如,@ Override用于指示解释器注释的方法已被覆盖。
建立时间指示
批注向解释器提供构建时/编译时指令,软件构建工具使用这些指令来生成代码,Pom.XML文件等。
运行时说明
可以在运行时定义注释,以便可以在运行时访问它们并向程序提供指令。
现在,让我们讨论它们的类型。
注释类型
注释通常分为以下三种类型:
标记注释
声明标记注释是为了标记的目的,该标记描述了标记的存在。
它们中不包含任何成员,这使它们保持为空。
@Override是标记注释的示例。
package Types;
@interface MarkerTypeAnnotation{}
单个注释
该名称本身指定"单个注释"旨在其中包含单个成员。
速记方法用于将值指定为在"单个注释"中声明的成员。
package Types;
@interface SingleTypeAnnotation{
int member() default 0;
}
完整注释
完整或者多个注释与单个注释相似,但是它们可以包含多个成员/名称,值,对。
package Types;
@interface FullAnnotationType{
int member1() default 1;
String member2() default "";
String member3() default "abc";
}
Java还提供了一些内置注释。
Java内置注释
保留注释
保留注释旨在指示带有注释类型的特定注释要保留多长时间。
以下是保留注释的示例
package Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface theitroadAnnotation {
String MethodName();
String Description();
}
class RetentnionTest{
@theitroadAnnotation(MethodName = "Retention Annotation test", Description = "testing annotations")
public void TestMethod(){
}
}
弃用的注释
不建议使用的批注用于通知编译器特定的方法,类或者字段不重要,并且它指示声明已过时。
package Deprecated;
public class Deprecated {
@Deprecated
public void Display() {
System.out.println("Deprecated Annotation test Method()");
}
public static void main(String args[]) {
Deprecated Dep = new Deprecated();
Dep.Display();
}
}
替代注释
它是标记类型的注释。
重写注释旨在确保超类方法被重写,并且不被重载。
用@Override注释的方法应该覆盖超类中的方法,否则将引发编译时错误。
package Override;
class Parent {
public void Display() {
System.out.println("Parent Class Method exrecuting()");
}
public static void main(String args[]) {
Parent P1 = new Child();
P1.Display();
}
}
class Child extends Parent {
@Override
public void Display() {
System.out.println("Child Class Method exrecuting()");
}
}
禁止警告注释
抑制警告注释用于在程序执行期间消除/抑制解释器警告。
禁止警告注释可以应用于任何类型的声明。
以下是此类注释的示例。
package SuppressWarning;
class DeprecatedTest {
@Deprecated
public void Display() {
System.out.println("Deprecated test display()");
}
}
public class SuppressWarning{
@SuppressWarnings({"checked", "deprecation"})
public static void main(String args[]) {
DeprecatedTest d1 = new DeprecatedTest();
d1.Display();
}
}
继承的注释
默认情况下,Java中的注释不会继承到子类。
因此,"继承的注释"标记了要继承给子类的注释。
以下是继承注释的示例
package Inherited;
public @interface MyAnnotation {
}
package Inherited;
public @interface MyInheritedAnnotation {
}
package Inherited;
@MyAnnotation
@MyInheritedAnnotation
public class BaseClass {
}
package Inherited;
public class SubClass extends BaseClass {
}
package Inherited;
public class ExampleMain {
public static void main(String[] args) {
MyAnnotation myannotation = SubClass.class.getAnnotation(MyAnnotation.class);
System.out.println(myannotation);
MyInheritedAnnotation myannotation2 = SubClass.class.getAnnotation(MyInheritedAnnotation.class);
System.out.println(myannotation2);
}
}
目标注释
目标标签用于指定使用的注释类型。
注释库声明了许多常量来指定需要应用注释的元素的类型,例如TYPE,METHOD,FIELD等。
我们可以从java.lang.annotation访问Target标记。
元素类型
|||
| --- - | --- |
|元素类型|要应用的注释的位置|
|型号类,界面或者枚举|
|领域|领域|
|方法|方法|
|构造函数|构造函数|
| local_variable |局部变量|
| annotation_type |注释类型|
|参数|参数|
package Target;
public @interface CustomAnnotation {
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
public @interface MyCustomAnnotation {
}
public class target {
@CustomAnnotation
public void myMethod(){
System.out.println("Hello World");
}
}
记录的注释
它是标记类型的注释,用于与记录注释的工具进行通信。
默认情况下,Javadoc注释不包含注释。
在代码中使用Documented注释使Javadoc可以处理注释类型的信息并将其包括在结果文档中。
package Documented;
import java.lang.annotation.Documented;
@Documented
public @interface DocumentAnnotation {
class AddNumbers{
public static void main(String args[]){
int x=10,y=20,z;
z = x + y;
System.out.println("Sum of the integers = " + z);
}
}
}
Java中的自定义注释
Java自定义批注是易于创建和使用的用户定义批注。
@Interface元素用于声明注释。
自定义注释的示例如下。
package Custom;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@ interface TestAnnotation {
String Developer() default "theitroad";
String Expirydate();
}
public class Custom {
@TestAnnotation(Developer="Rajesh", Expirydate="01-Aug-2026")
void function1() {
System.out.println("Testing Annotation method 1");
}
@TestAnnotation(Developer="Anil", Expirydate="01-Oct-2025")
void function2() {
System.out.println("Test Annotation method 2");
}
public static void main(String args[]) {
System.out.println("Customized Annotations Example");
}
}

