注释基础知识
在J2SE 5.0 中,注释是以‘@ 注释名’在代码中存在的,例如:J2SE 5.0 内置的注释:@Override 、@Deprecated ;有的注释还可以添加一些参数值,例如:@SuppressWarnings (value="unchecked") ;对于这种只有一个参数,且参数名为value 的注释,我们在使用时可以简写为: @SuppressWarnings ("unchecked") 。
根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注释是否只存在于源代码级,或者它也能在class 文件中出现。
元数据的作用
如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:
l 编写文档:通过代码里标识的元数据生成文档。
l 代码分析:通过代码里标识的元数据对代码进行分析。
l 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。
基本内置注释
@Override 注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。如果该方法不是覆盖父类的方法,将会在编译时报错。例如我们为某类重写toString() 方法却写成了tostring() ,并且我们为该方法添加了@Override 注释;代码如下:
package com.gelc.annotation.demo.basic;
public class OverrideDemo {
// @Override
public String tostring() {
return super.toString();
}
}
定制注释类型
好的,让我们创建一个自己的注释类型(annotation type )吧。它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface, 如下例:
public @interface NewAnnotation {
}
使用定制的注释类型
我们已经成功地创建好一个注释类型NewAnnotation ,现在让我们来尝试使用它吧,如果你还记得本文的第一部分,那你应该知道他是一个标记注释,使用也很容易,如下例:
public class AnnotationTest {
@NewAnnotation
public static void main(String[] args) {
}
}
添加变量
J2SE 5.0 里,我们了解到内置注释 @SuppressWarnings() 是可以使用参数的,那么自定义注释能不能定义参数个数和类型呢?答案是当然可以,但参数类型只允许为基本类型、String 、Class 、枚举类型等,并且参数不能为空。我们来扩展NewAnnotation ,为之添加一个String 类型的参数,示例代码如下:
public @interface NewAnnotation {
String value();
}
使用该注释的代码如下:正如你所看到的,该注释的使用有两种写法,这也是在之前的文章里所提到过的。如果你忘了这是怎么回事,那就再去翻翻吧。
public class AnnotationTest {
@NewAnnotation("Just a Test.")
public static void main(String[] args) {
sayHello();
}
@NewAnnotation(value="Hello NUMEN.")
public static void sayHello() {
// do something
}
}
为变量赋默认值
我们对Java 自定义注释的了解正在不断的增多,不过我们还需要更过,在该条目里我们将了解到如何为变量设置默认值,我们再对NewAnnotaion 进行修改,看看它会变成什么样子,不仅参数多了几个,连类名也变了。但还是很容易理解的,我们先定义一个枚举类型,然后将参数设置为该枚举类型,并赋予默认值。
public @interface Greeting {
public enum FontColor {RED, GREEN, BLUE};
String name();
String content();
FontColor fontColor() default FontColor.BLUE;
}
我们还是来看看如何使用吧,这里有两种选择,其实变数也就是在赋予默认值的参数上,我们可以选择使用该默认值,也可以重新设置一个值来替换默认值,如下例:
public class AnnotationTest {
@NewAnnotation("Just a Test.")
public static void main(String[] args) {
sayHello();
sayHelloWithDefaultFontColor();
sayHelloWithRedFontColor();
}
@NewAnnotation("Hello NUMEN.")
public static void sayHello() {
}
@Greeting(name="NUMEN", content="Hello")
public static void sayHelloWithDefaultFontColor() {
// do something
}
@Greeting(name="NUMEN", content="Hello", fontColor=Greeting.FontColor.RED )
public static void sayHelloWithRedFontColor() {
// do something
}
}
概要
通过对本文的学习,你应该了解和掌握到如何定制注释和使用注释,这样会在一定程度上辅助我们的开发。在下一篇文章中,我们会学习元注释。
读取注释信息
当我们想读取某个注释信息时,我们是在运行时通过反射来实现的,如果你对元注释还有点印象,那你应该记得我们需要将保持性策略设置为RUNTIME ,也就是说只有注释标记了@Retention(RetentionPolicy.RUNTIME) 的,我们才能通过反射来获得相关信息,下面的例子我们将沿用前面几篇文章中出现的代码,并实现读取AnnotationTest 类所有方法标记的注释并打印到控制台。好了,我们来看看是如何实现的吧:
分享到:
相关推荐
Java注释是编程过程中的重要组成部分,它们不仅有助于提高代码的可读性和可维护性,还能为其他开发者提供代码的功能解释和使用指南。本篇全解文档深入探讨了Java注释的各种类型及其在不同框架中的应用,如Hibernate...
实用的的java注释模板,可以让你们的开发注释得到统一。
在深入探讨Java注释的重要性与应用之前,我们先简要回顾一下给定文件的信息:标题为“ajava注释说明”,描述中强调了这是学习Java的必备文档,并鼓励大家积极学习Java。虽然部分文本似乎包含了乱码或非标准字符,但...
Java源码注释翻译是一个重要的开发工具,尤其对于那些阅读英文源码或处理国际开源项目时,能够快速理解和学习代码的含义。这个项目的核心目标是批量处理Java源码文件,将其中的类注释自动翻译成中文,以帮助开发者...
使用这样的工具,开发者或研究人员可以更容易地了解已有的Java类库或应用程序的工作原理,甚至可能用于学习和借鉴其他项目的实现。但要注意,未经许可的反编译和使用他人代码可能涉及到版权问题,因此在实际操作前,...
在编程领域,代码和注释的模板格式是至关重要的,特别是在Java这种面向对象的语言中。良好的代码风格和规范不仅能够提高代码的可读性,还能提升团队协作的效率,因为所有人都能按照统一的标准来编写代码。"Java代码...
通过深入学习这些文档,开发者可以更好地理解和应用Java注释,以及在Spring、Hibernate和Struts2框架中如何有效地利用注解来简化配置,增强代码的可读性和可维护性。理解并熟练运用这些注解,将有助于提升开发项目的...
本项目名为“java经典去注释程序”,专门针对Java代码中的三种主要注释类型——行内注释(//)、块注释(/* */)和Javadoc注释(/** */)进行清除。 这个程序采用了枚举(enum)数据类型,这是Java中一种特殊的数据...
Java API是Java编程语言的核心库,包含了大量预定义的类...通过下载这个注释齐全的练习代码,你可以逐个学习和实践上述知识点,加深理解,并提升编程能力。记得理论结合实践,不断尝试和调试,才能更好地掌握Java API。
Java注释规范的制定,旨在提供一种标准化、可操作的注释方法,以解决在快速迭代和多人协作中代码可读性差、维护困难等问题。规范的制定基于对以下问题的深入思考:面对陌生代码如何快速理解其功能?如何避免注释内容...
【标题】:“JAVA写的扫雷 已经添加好了注释值得学习” 【描述】:“JAVA写的扫雷 已经添加好了注释值得学习” 【标签】:“扫雷” “JAVA” 【文件列表】:扫雷 Java编程实现的扫雷游戏是一款经典的逻辑推理...
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面...通过学习和实践这些知识点,不仅可以理解Java GUI编程,还能掌握文件操作、事件处理和文本处理等多个领域的重要技能。
JAVA 后端学习课程总结 JAVA 是一种广泛使用的编程语言,广泛应用于 Android 应用程序开发、Web 应用程序开发、桌面应用程序开发等领域。JAVA 后端开发是指使用 JAVA 语言开发服务器端应用程序,例如 Web 服务、...
在本课程设计中,我们将深入探讨一个基于Java的聊天程序,该程序带有详细的注释,旨在帮助学习者理解和掌握Java编程以及网络通信的基本原理。这个项目不仅提供了源代码,还通过注释为初学者提供了宝贵的指导,使其...
通过学习《Java SE 飞机大战全注释》,开发者不仅可以掌握Java编程的基本技巧,还能理解游戏开发的基本流程和设计思路,为今后的项目开发打下坚实基础。此外,注释的详细程度有助于初学者更好地理解和学习源代码,...
#### 二、Java注释类型 ##### 2.1 单行注释 - **格式**:`// 注释内容` - **应用场景**: - 对单行代码进行简短说明。 - 当代码本身已足够清晰时,用于强调或补充信息。 **示例**: ```java int x = 5; // ...
总结来说,理解和遵循编码规范、注释规范以及代码风格对于任何Java开发者都是至关重要的。华为的这些资源提供了一套完整的框架,旨在帮助开发团队产出高质量、易维护的代码。通过深入学习和应用这些规范,开发者不仅...
Java五子棋游戏源码是为初学者设计的一个优秀学习资源,它可以帮助新手程序员了解如何在Java环境中构建一个简单的桌面游戏。在这个项目中,你将接触到基础的图形用户界面(GUI)编程、事件处理以及基本的游戏逻辑...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,以其跨平台的特性深受开发者喜爱。本项目是一个基于Java编写...通过实践和理解这个程序,你将能够更好地掌握Java编程的基础,并为进一步的学习打下坚实的基础。
7. **注释与可读性**:程序中的详细注释是学习和理解代码逻辑的重要工具。它们解释了类和方法的功能,变量的作用,以及复杂的算法步骤,有助于初学者快速理解和复用代码。 8. **测试与调试**:对于这样的项目,单元...