快好知 kuaihz订阅看过栏目

 

注解是一个汉语词汇,读音为zhù jiě,意思是用文字来解释字句;泛指解释;解释字句的文字;神鬼名。民间传说指阴司第一阎王殿中职掌解送鬼魂并令其注册者。

基本信息

词目:注解

近义词:注明 注脚 注释 表明 解说 解释 讲明 评释

反义词:正文

引文

《后汉书·儒林传上·杨伦》:“ 扶风 杜林 传《古文尚书》、 林 同郡 贾逵 为之作训, 马融 作传, 郑玄 注解,由是《古文尚书》遂显於世。”

宋 欧阳修 《序》:“其难晓之言,略为注解。”

平步青 《霞外攟屑·论文上·杜牧之》:“今之言者,必曰使圣人微旨不传,乃 郑玄 辈为注解之罪,仆观其所解释,明白完具。”

《儿女英雄传》第三八回:“好端端的话,被这位太太一下注解,他姊妹听着益发不好意思。”

艾芜 《人生哲学的一课》三:“﹝我﹞就只是知道这一点子,然而这一点也尽够一个沦落人的注解了。”

三国 吴 陆绩 《述玄》:“后数年专精读之,半岁间粗觉其意,於是草创注解,未能也。”

赵与时 《宾退录》卷一:“ 灵素 被旨修道书,改正诸家醮仪,校讎《丹经·灵篇》,删修注解。”

清 俞樾 《茶香室续钞·李善注有数本》:“其绝笔之本,兼释音训义,注解甚多。”

胡适 《新诂·序例》:“全篇共分九节,现在逐节分写。本文逐字隔开,注解用五号字,注之注用六号字。”

明 李贽 《答邓石阳书》:“昨者复书‘真空’十六字,已说得无渗漏矣,今复为注解以请正,何如?”

《镜花缘》第九三回:“不是《博雅》、《方言》的别名,就是《山海经》、《拾遗记》的冷名,先要注解,岂能雅俗共赏。”

元 无名氏 《端正好》套曲:“初学笃志真心爱,广看些经书注解,忽然间心地悟豁然开。”

吕柟 《朱四子抄释》卷一:“读书须是将本文熟读,且咀嚼有味,若有理会不得处,然后将注解看,方是有益。”

朱之瑜 《答桐山知几书》:“故不肖於古文子史中注解时有批抹者,此惟可与知者道耳,与庸人言,无不抵掌而笑。”

李斗 《扬州画舫录·新城北录中》:“一为 关帝 、二十四功曹、二十四注解、北极、五祖、天师出迹。”

JAVA中的注解

java.lang.annotation.Retention可以在您定义Annotation型态时,指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯。

在使用Retention型态时,需要提供java.lang.annotation.RetentionPolicy的列举型态:

package java.lang.annotation;

public enum RetentionPolicy {

SOURCE, //编译器处理完Annotation资讯后就没事了

CLASS, //编译器将Annotation储存于class档中,预设

RUNTIME //编译器将Annotation储存于class档中,可由VM读入

}

RetentionPolicy为SOURCE的例子是SuppressWarnings,这个资讯的作用仅在告知编译器抑制警讯,所以不必将这个资讯储存于class档案。

RetentionPolicy为RUNTIME的时机,可像是您使用Java设计一个程式码分析工具,您要VM读出Annotation资讯,以在分析程式中使用,搭配Reflection机制,就可以达到这个目的。

在J2SE 5.0中新增了java.lang.reflect.AnnotatedElement这个界面,当中定义有四个方法:

public Annotation getAnnotation(Class annotationType);

public Annotation[] getAnnotations();

public Annotation[] getDeclaredAnnotations();

public boolean isAnnotationPresent(Class annotationType);

Class、Constructor、Field、Method、Package等类别,都实作了AnnotatedElement这个介面,所以您可以从这些类别的实例上,分别取得标示于其上的Annotation与其资讯,如果RetentionPolicy为RUNTIME的话。

举个例子来说,假设您设计了以下的Debug Annotation:

* Debug.java

package onlyfun.caterpillar;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)

public @interface Debug {

String value();

String name();

}

由于RetentionPolicy为RUNTIME,编译器在处理Debug Annotation时,会将之编译至class档中,并可以VM读出Annotation资讯,接着我们将Debug用于程式中:

* SomeObject.java

package onlyfun.caterpillar;

public class SomeObject {

@Debug(

value = "unit",

name = "debug1"

)

public void doSomething() {

// ....

}

}

可以设计一个工具程式来读取Annotation资讯:

* DebugTool.java

package onlyfun.caterpillar;

import java.lang.annotation.Annotation;

import java.lang.reflect.Method;

public class DebugTool {

public static void main(String[] args)

throws NoSuchMethodException {

Class c = SomeObject.class;

Method method = c.getMethod("doSomething");

if(method.isAnnotationPresent(Debug.class)) {

System.out.println("@Debug is found.");

Debug debug = method.getAnnotation(Debug.class);

System.out.println("\tvalue = " + debug.value());

System.out.println("\tname = " + ());

}

else {

System.out.println("@Debug is not found.");

}

Annotation[] annotations = method.getAnnotations();

for(Annotation annotation : annotations) {

System.out.println(

annotation.annotationType().getName());

}

}

}

程式的执行结果如下:

@Debug is found.

value = unit

name = debug1

onlyfun.caterpillar.Debug

投稿
非常不爽,删了吧! 相关词条:文化 语言文字 词语 郑玄 古文尚书 平步青 杜牧 艾芜 赵与时 诸家 醮仪 胡适 复书 请正 拾遗记 吕柟 朱之瑜 李斗 java.lang.annotation Annotation Constructor