Annotation & Paraphrase
chisel中annotation的用法-概述说明以及解释

chisel中annotation的用法-概述说明以及解释1.引言1.1 概述概述:Chisel是一种硬件描述语言,用于设计和验证硬件电路。
在Chisel 中,Annotation是一种注释机制,可以帮助开发者在设计和调试硬件时提供额外的信息和指导。
通过Annotation,开发者可以在Chisel代码中添加额外的信息,如约束条件、优化建议、调试信息等,以提高硬件设计的效率和可维护性。
本文将介绍Chisel中Annotation的作用和用法,帮助读者更好地理解如何利用Annotation来优化和调试硬件设计。
1.2 文章结构本文主要分为引言、正文和结论三个部分。
在引言部分中将对文章的概述、结构和目的进行介绍,为读者提供整体的框架。
在正文部分中将详细介绍Chisel的简介,以及Annotation在Chisel中的作用和用法。
在结论部分中将总结全文的内容,展望Annotation在Chisel中的应用前景,并加上结束语,为整篇文章做一个完美的收尾。
整个文章结构清晰,层次分明,旨在为读者提供全面的信息和深入的理解。
1.3 目的在本文中,我们将讨论Chisel中annotation的用法。
通过深入了解annotation在Chisel中的作用以及具体的用法,读者将能够更好地理解如何在Chisel代码中使用annotation来实现更加灵活和高效的硬件设计。
我们的目的是帮助读者掌握如何利用annotation这一强大工具来优化硬件设计过程,并且能够在实践中灵活运用annotation来提高设计的可维护性和可扩展性。
通过本文的学习,读者将能够更好地利用Chisel语言的特性,为自己的硬件设计项目带来更大的成功和效率提升。
2.正文2.1 Chisel简介Chisel是一个硬件描述语言,它采用Scala语言作为其背后的实现。
Chisel的设计目标是为了简化硬件设计的过程,并提供一种高层抽象的方式来描述硬件结构。
Java中的注解(Annotation)

Java中的注解(Annotation)⽬录结构:contents structure [+]1.2.3.1.2.4.1.2.1.什么是注解⽤⼀个词就可以描述注解,那就是元数据,即⼀种描述数据的数据。
所以,可以说注解就是源代码的元数据。
⽐如,下⾯这段代码:@Overridepublic String toString() {return "This is String Representation of current object.";}上⾯的代码中,我重写了toString()⽅法并使⽤了@Override注解。
但是,即使我不使⽤@Override注解标记代码,程序也能够正常执⾏。
那么,该注解表⽰什么?这么写有什么好处吗?事实上,@Override告诉编译器这个⽅法是⼀个重写⽅法(描述⽅法的元数据),如果⽗类中不存在该⽅法,编译器便会报错,提⽰该⽅法没有重写⽗类中的⽅法。
如果我不⼩⼼拼写错误,例如将toString()写成了toStrring(){double r},⽽且我也没有使⽤@Override注解,那程序依然能编译运⾏。
但运⾏结果会和我期望的⼤不相同。
现在我们了解了什么是注解,并且使⽤注解有助于阅读程序。
Annotation是⼀种应⽤于类、⽅法、参数、变量、构造器及包声明中的特殊修饰符。
它是⼀种由JSR-175标准选择⽤来描述元数据的⼀种⼯具。
2.为什么要使⽤注解使⽤Annotation之前(甚⾄在使⽤之后),XML被⼴泛的应⽤于描述元数据。
不知何时开始⼀些应⽤开发⼈员和架构师发现XML的维护越来越糟糕了。
他们希望使⽤⼀些和代码紧耦合的东西,⽽不是像XML那样和代码是松耦合的(在某些情况下甚⾄是完全分离的)代码描述。
假如你想为应⽤设置很多的常量或参数,这种情况下,XML是⼀个很好的选择,因为它不会同特定的代码相连。
如果你想把某个⽅法声明为服务,那么使⽤Annotation会更好⼀些,因为这种情况下需要注解和⽅法紧密耦合起来,开发⼈员也必须认识到这点。
Annotation入门

同时,annotation运行存在两种方式:运行时、编译时。
上文中讨论的都是在运行时的annotation应用,但在编译时的annotation应用还没有涉及,一、为什么使用Annotation:在JAVA应用中,我们常遇到一些需要使用模版代码。
例如,为了编写一个JAX-RPC web service,我们必须提供一对接口和实现作为模版代码。
如果使用annotation对远程访问的方法代码进行修饰的话,这个模版就能够使用工具自动生成。
另外,一些API需要使用与程序代码同时维护的附属文件。
例如,JavaBeans需要一个BeanInfo Class与一个Bean同时使用/维护,而EJB则同样需要一个部署描述符。
此时在程序中使用anno tation来维护这些附属文件的信息将十分便利而且减少了错误。
二、Annotation工作方式:在5.0 版之前的Java平台已经具有了一些ad hoc annotation 机制。
比如,使用transient修饰符来标识一个成员变量在序列化子系统中应被忽略。
而@deprecated这个javadoc tag也是一个ad h oc annotation用来说明一个方法已过时。
从Java5.0版发布以来,5. 0平台提供了一个正式的annotation功能:允许开发者定义、使用自己的annoatation类型。
此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotaion 的API,一个使用annotation修饰的class文件,一个annotation处理工具(apt)组成。
annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。
annotation可以从源文件、class文件或者以在运行时反射的多种方式被读取。
当然annotation在某种程度上使javadoc tag更加完整。
Annotation注解

一、Annotation究竟是什么?Annotation 提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。
从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。
这些信息被存储在annotation的“name=value”结构对中。
annotation类型是一种接口,能够通过java反射API的方式提供对其信息的访问。
annotation能被用来为某个程序元素(类、方法、成员变量等)关联任何的信息。
需要注意的是,这里存在着一个基本的潜规则:annotaion不能影响程序代码的执行,无论增加、删除annotation,代码都始终如一的执行。
另外,尽管一些annotation通过java的反射api方法在运行时被访问,而java语言解释器在工作时忽略了这些annotation。
正是由于java虚拟机忽略了annotation,导致了annotation类型在代码中是“不起作用”的;只有通过某种配套的工具才会对annotation类型中的信息进行访问和处理。
本文中将涵盖标准的annotation和meta- annotation类型,陪伴这些annotation类型的工具是java编译器(当然要以某种特殊的方式处理它们)。
由于上述原因,annotation在使用时十分简便。
一个本地变量可以被一个以NonNull命名的annotation类型所标注,来作为对这个本地变量不能被赋予null 值的断言。
而我们可以编写与之配套的一个annotation代码分析工具,使用它来对具有前面变量的代码进行解析,并且尝试验证这个断言。
当然这些代码并不必自己编写。
在JDK安装后,在JDK/bin目录中可以找到名为“apt”的工具,它提供了处理annotation的框架:它启动后扫描源代码中的annotation,并调用我们定义好的annotation处理器完成我们所要完成的工作(比如验证前面例子中的断言)。
Annotation入门教程 第24讲 自定义Annotation

北风网项目实战培训
基于移动支付平台间接口报文解析技术 核心架构实现、及平台交易处理项目全程实录
自定义Annotation
讲师:momo(北风网版权所有)
本节主要内容
@Documented 将此注解包含在 javadoc 中 @Retention 表示在什么级别保存该注解信息。 可选的 RetentionPolicy 参数包括: 1、 RetentionPolicy.SOURCE 注解将被编译器丢弃 2、 RetentionPolicy.CLASS 注解在class文件中可用,但会 被VM丢弃 3、 RetentionPolicy.RUNTIME VM将在运行期也保留注释 ,因此可以通过反射机制读取注解的信息。 @Inherited 允许子类继承父类中的注解
视频配套资料
本次课的课件 课堂演示代码
移动支付平台间接口报文解析核心架构、及平台交 易全程实录 课程学习地址:/goods441.html
欢迎访问我们的官方网站
Annotation注解的使用

使用@SuppressWarning 可以压制多个警告的信息。 在使用序列化接口的时候会有警告信息,可以使用@SuppressWarning进行压制。 以上都是系统中内建的3个Annotation。在开发过程中也会经常使用。
return ""; } }
package cn.demo.test; import ng.annotation.Annotation; import ng.reflect.Method; class Te{ public static void main(String[] args) throws Exception {
1、 @OverRide
表示正确的覆写操作。例如,现在有如下两个类:
eg: public class Person{
public String say(){ return "人在说话";
} } public class Student exstend Person{
public String say(){ return "学生在说话";
自定义Annnotation
如果我们想要自己定义自己的注解类型,那么必须要查看JDK又是如何定义系统内建的Annotation的,如下是JDK API文档中写入的内容。 ng
注释类型 Override
@Target(value=METHOD) @Retention(value=SOURCE)
public @interface MyAnnotation{} 如果现在要使用此Annotation ,如果不在同一个保重,需要导入包,使用@+名称来使用, @MyAnnotation
Java基础之Annotation解读
Java基础之理解Annotation一、概念Annontation是Java5开始引入的新特征。
中文名称一般叫注解。
它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。
Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
二、原理Annotation其实是一种接口。
通过Java的反射机制相关的API来访问annotation信息。
相关类(框架或工具中的类)根据这些信息来决定如何使用该程序元素或改变它们的行为。
annotation是不会影响程序代码的执行,无论annotation怎么变化,代码都始终如一地执行。
Java语言解释器在工作时会忽略这些annotation,因此在JVM 中这些annotation是“不起作用”的,只能通过配套的工具才能对这些annontaion类型的信息进行访问和处理。
Annotation与interface的异同:1)、Annotation类型使用关键字@interface而不是interface。
这个关键字声明隐含了一个信息:它是继承了ng.annotation.Annotation接口,并非声明了一个interface2)、Annotation类型、方法定义是独特的、受限制的。
Annotation 类型的方法必须声明为无参数、无异常抛出的。
这些方法定义了annotation的成员:方法名成为了成员名,而方法返回值成为了成员的类型。
而方法返回值类型必须为primitive 类型、Class类型、枚举类型、annotation类型或者由前面类型之一作为元素的一维数组。
方法的后面可以使用default和一个默认数值来声明成员的默认值,null不能作为成员默认值,这与我们在非annotation类型中定义方法有很大不同。
annotation详解
元数据的作用如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:l 编写文档:通过代码里标识的元数据生成文档。
l 代码分析:通过代码里标识的元数据对代码进行分析。
l 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。
基本内置注释@Override注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。
如果该方法不是覆盖父类的方法,将会在编译时报错。
例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;@Deprecated的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,注意:要了解详细信息,请使用-Xlint:deprecation 重新编译。
@SuppressWarnings与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:deprecation 使用了过时的类或方法时的警告unchecked 执行了未检查的转换时的警告,例如当使用集合时没有用泛型(Generics) 来指定集合保存的类型fallthrough 当Switch 程序块直接通往下一种情况而没有Break 时的警告path 在类路径、源文件路径等中有不存在的路径时的警告serial 当在可序列化的类上缺少serialVersionUID 定义时的警告finally 任何finally 子句不能正常完成时的警告all 关于以上所有情况的警告注意:要了解详细信息,请使用-Xlint:unchecked 重新编译。
定制注释类型好的,让我们创建一个自己的注释类型(annotation type)吧。
Annotation注解
Annotation注解注解Annotation(注解)概述从JDK5.0开始, Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)。
Annotation其实就是代码里的特殊标记,它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。
在Java 技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。
掌握注解技术的要点:如何定义注解。
如何反射注解,并根据反射的注解信息,决定如何去运行类。
了解注解及java提供的几个基本注解@SuppressWarnings:抑制编译器警告。
首先编写一个AnnotationTest类,先通过@SuppressWarnings的应用让大家认识和了解一下注解,通过System.runFinalizersOnExit(true);的编译警告引出@SuppressWarnings("deprecation")。
public class AnnotationTest {@SuppressWarnings("deprecation")public static void main(String[] args) {System.runFinalizersOnExit(true);}}@Deprecated:用于表示某个程序元素(类,方法等)已过时。
接着直接在刚才的类中增加一个方法,并加上@Deprecated标注,在另外一个类中调用这个方法。
public class AnnotationTest {@SuppressWarnings("deprecation")public static void main(String[] args) {System.runFinalizersOnExit(true);}@Deprecatedpublic static void sayHello() {System.out.println("hi,李阿昀");}}@Override:限定重写父类方法,该注解只能用于方法。
Java Annotation 手册
Java Annotation 手册前言:在上篇文章《Java Annotation入门》中概要性的介绍了Annotation的定义、使用,范围涵盖较广,但是深度不够。
所以作者在《Java Annotation入门》后,继续整理了Annotation的概念和知识点,与喜欢research的朋友们共享。
阅读提示:文中提到的程序成员或者程序元素是一个概念,指组成程序代码的单元:如类、方法、成员变量。
一、Annotation究竟是什么?Annotation提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。
从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。
这些信息被存储在annotation的“name=value”结构对中。
annotation类型是一种接口,能够通过java反射API的方式提供对其信息的访问。
annotation能被用来为某个程序元素(类、方法、成员变量等)关联任何的信息。
需要注意的是,这里存在着一个基本的潜规则:annotaion不能影响程序代码的执行,无论增加、删除annotation,代码都始终如一的执行。
另外,尽管一些annotation通过java的反射api方法在运行时被访问,而java语言解释器在工作时忽略了这些annotation。
正是由于java虚拟机忽略了annotation,导致了 annotation类型在代码中是“不起作用”的;只有通过某种配套的工具才会对annotation类型中的信息进行访问和处理。
本文中将涵盖标准的annotation和meta-annotation类型,陪伴这些annotation类型的工具是java 编译器(当然要以某种特殊的方式处理它们)。
由于上述原因,annotation在使用时十分简便。
一个本地变量可以被一个以NonNull命名的annotation类型所标注,来作为对这个本地变量不能被赋予null值的断言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• Annotation • Paraphrase 加注法 释义法
Annotation 加注法
General introduction
• Annotation is used in translation of some cultural terms which have no equivalent expression in another language. • 由于英汉文化存在许多差异,因此英语中某 些文化词语在汉语中根本就没有对等词,形 成了词义上的空缺。在这种情况下,英译汉 时常常要采用加注法来弥补空缺。 • 加注通常可以用来补充诸如背景材料、词语 起源等相关信息,便于读者理解。
• The American Dream 美国梦(即美国式的民主与自由:不依赖 世袭的物质条件和社会地位,白手起家的 个人奋斗精神)
• The Fifth Avenue 第五大道(指纽约曼哈顿区第34街到第59 街这一片区域。街上到处都是百货商店以 及各种商铺,也是万圣节游行的必经之地。 现已成为高贵与富有的象征。)
• PS: Tom, Dick, Harry都是英美常见的人名, 这里泛指任何人,相当于汉语中的“张三、 李四、王五”。所以这里不宜直译为“汤 姆、迪克、哈里”。
tips
• 释义法用来翻译某些不可直译的表达,或是 处理那些虽可以直译成汉语但是表达效果欠 佳的句子。
• The question she flunked on was: "What is the Constitution of the United States *?" The answer she gave was: "A boat." 她答错的一道题是:"美国宪法*是什么? 她的回答却是"一条船。" (*the Constitution of the United States 指美国宪法,但它也是美国历史上著名战 舰“宪法号ansliteration + annotation) • 指音译后附加解释性注释。注释可长可短, 可采用文中注释,也可采用脚注,还可二者 合用。
• Jazz 爵士音乐 • Clone 克隆(一种无性繁殖方法) • Bingo 宾果游戏(一种填写格子的游戏, 在游戏中第一个成功者以喊“Bingo”表示 取胜而得名) • El Nino 厄尔尼诺(现象)(指严重影响 全球气候的太平洋热带海域的大风及海水的 大规模移动)
Paraphrase
释义法
Paraphrase (释义法)
• 释义(paraphrase)是指舍弃原文的具体形 象,采用解释性的方法译出原文的意思。 • 在翻译一些具有鲜明民族色彩的词语,例 如成语、典故等,如果直译不能使译文读 者明白,并且原文重意不重形时,而加注 又太哆嗦,可以采用释义法将原文意义很 好地传达。
• He did it a Jordan. 他投篮象飞人乔丹一 样棒。
In sentence
• New York was never Mecca to me. 纽约从不是我心中的 圣地麦加。
• I’m Peter Darwin. Everyone asks, so I may as well say at once that no, I’m not related to Charles. • 我叫彼得•达尔文。谁都会对我的名字产生 怀疑,我不妨当下说个明白:我与进化论 创始人查尔斯没有关系。
• togetherness 和睦相处,亲密无间;不分彼此的集体感 • swan song 绝唱,辞世之作、归天之作 • a throwaway society 一个大手大脚、浪费成风的社会
• The young girl thumbed her way to the passing cars. 那个年轻的姑娘站在路边不停地向来往的 汽车摆动着竖起的拇指表示她要搭车。 • PS: thumb one’s way为英语手势语,意 为“站在路边向来往的汽车摆动着竖起的 拇指表示要搭车”,但是在汉语中没有这 种手势语。
• 2) 直译加注(literal translation + annotation) • 指直译原文,并附加解释性注释。注释可长 可短,既可采用文中注释,也可采用脚注, 还可二者合用。
• Big Apple 大苹果(纽约的别称) • sesame street 芝麻街 (指美国儿童电视连续节目,每天一小时, 主要为动画片、游戏、木偶戏等) • fly girl 【俚】飞飞女 (时髦撩人的年轻女子, 尤指美国黑人少女) • tabloid (猎取并报道名人轶事等以迎合低级趣味的) 市井小报、市井电视节目
Other examples
• She and her mother are as like as two peas. • 她和她母亲长得一模一样。
• PS: as like as two peas 不能译为“像两颗 豌豆一样相似”。
• It is not easy to become a member of that club—they want people who have plenty of money to spend, not just every Tom, Dick, and Harry. • 要参加那个俱乐部并非易事—他们只吸收 手头阔绰的人,而不是普通百姓。
• Like a son of Bachus, he can drink up two bottles of whisky at a breath. 他简直像酒神巴赫斯的儿子,能一口气喝 光两瓶威士忌。 (巴赫斯是古希腊神话中的酒神。)
• Let George do it. 让乔治*去做吧。 ( *法国国王路易十二是个不爱动脑筋的人, 一旦遇到重要事情,他就推托给大臣乔治。 他总说:“让乔治去做吧,他是个能干的 人。”后喻让别人去干,让他人去伤神。)
• Bill’s new girlfriend is certainly a knockout. 比尔新结识的女朋友确实很迷人。 • PS:这是来自拳击比赛的术语。在拳击比赛 中,假如一名拳手把另一名拳手打倒下, 躺在擂台上,在一段指定时间内都无力起 身继续比赛的话,则拳证会判后者被“击 倒”,这就是knockout,后引申为表示极 具魅力、使对方晕头转向的人,多指女 性。)
In sentence
• But I am short-tempered, frazzled from all responsibilities. I am the “sandwich generation” *, caught between kids and parents. 但是我的脾气不好,都是这些事给烦的。 我是个夹在孩子和父母之间的“三明治 人”。 (* “三明治人”指的是要照顾孩 子和父母的人)
Other examples
• The man who waters his grass after a good rain is carrying coals to Newcastle. 刚下一场及时雨,那人却又为草坪浇水, 真是把煤运到纽卡斯尔* ,多此一举。 (*纽卡斯尔:英国煤都。)
• It was Friday*and soon they'd go out and get drunk. 星期五发薪日到了,他们马上就要上街去喝 得酩酊大醉。 (*星期五[Friday]为英国的发薪日。)