词条 | 注解 |
释义 | 1.用文字来解释字句。 2.泛指解释。 3.解释字句的文字。 4.神鬼名。民间传说指阴司第一阎王殿中职掌解送鬼魂并令其注册者。 基本信息词目:注解 拼音: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<SomeObject> 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 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。