×

注解 需要 古人

古人读文言文需要“注释”吗为何?java中注解方式是否是侵入

jnlyseo998998 jnlyseo998998 发表于2022-11-18 22:18:33 浏览53 评论0

抢沙发发表评论

本文目录

古人读文言文需要“注释”吗为何

注释在古人读书时是必不可少的。由于时代、地域和文字形式的阻隔,人们只有通过注释才能理解古代典籍的内涵。

注释的形式丰富多样,传、注、笺、疏、故、训、章句、集解……各种类型的注释中包含了大量典章制度、名物典故和史实人物等文史知识,它们与原书一起,共同组成了中国灿烂悠久的传统文化的重要部分,也为现代人了解古代典籍提供了必不可少古人读文言文,很多时候需要“注释”,但也有很多时候不需要注释!为什么呢?

注释始于先秦时期,说明古人就善于使用“注释”工具

注释是指解释字句的文字,也指用文字解释字句。可以是文字符号图片等多种形式。注释,是对书籍或文章的语汇、内容、背景、引文作介绍、评议的文字。

注释开始于先秦时期。中国古代分得较细,分别称之为注、释、传、笺、疏、章句等。包含的内容很广。诸凡字词音义、时间地点、人物事迹、典故出处、时代背景都是注释对象。有脚注、篇末注、夹注等形式。古籍注释列在正文之中,有双行夹注和夹注。

古人读文言文为什么需要“注释”?

实际上,古代有两套语法,一套是写文章用的文言文,另一套就是日常交流用的白话语法。

人们攻读文言文,尤其是一些专业、艰涩的文言文,还必须借助注释这个工具,否则读不下去。

而且,古时候社会等级森雅,读书人、士族高高在上,处在社会的象牙塔,普通民众很少机会接触文言文。偶尔读一读稀罕的文言文,如果没有注释,简直无从读起啊!

这就是古时候注释盛行的原因。春秋战国时期,人们看不懂《易经》,纷纷注释,写出了名动天下的《易传》,成为《周易》内容的重要组成部分。对《三国志》、《水浒传》等名著的注释,更是精彩纷呈,佳作不断!

古代读书人读文言文,也不一定需要“注释”!

前面说了,古时候读书人、士族处在社会顶层,生活优渥,学富五车。这些读书人,由于知识渊博,读文言文可以不用注释,而是直接通读。

【无人车来也】有几个朋友,由于小时候国学基础扎实,长大后读文言文都顺手拈来,根本用不上什么注释!

这些朋友是现代人,都能脱离注释畅读文言文,何况古人呢?

java中注解方式是否是侵入

一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。

Java注解不是代码侵入,只是在源文件中嵌入“附加”信息,不改变原程序的运行。获取注解信息时通过反射机制读取。


一,Java注解用途

Java从5.0开始支持注解,Spring框架也从2.5开始舍弃xml配置,使用注解。

Java Annotation注解也叫元数据,不改变程序的运行,在编译、加载、运行时被读取,可以被很多工具使用,比如代码扫描工具、开发工具和部署工具等。

Java注解用途广泛,熟练使用它们有助于提高代码质量和开发效率,也是工程师水平高低的一个反映。


二,Java注解保留策略

声明注解时,指定不同的保留策略RetentionPolicy,比如@Override在编译时就被丢弃了,@Bean注解一直保留到运行时。


三,Java注解分类

Java注解很多,应用于多种功能场景,可以声明在package包、类、方法、成员变量、局部变量、形参等前面,用来对这些元素进行说明和注释。我们在实际开发工作中,会经常使用到一些注解,比如@Override, @Test,还有一些Spring注解,比如@Service, @Autowired, @SpringBootApplication

Java + Spring Boot开发时,用到的注解按照来源可以分类为:Java内置注解、Spring注解、Web注解、自定义注解,等等。


四,如何读取注解?

Package、Class、Constructor、Method、Field都实现了接口AnnotatedElement,该接口位于反射包java.lang.reflect中,调用功能函数获取注解信息:

比如声明一个HelloAnnotation注解,创建一个HelloClass类,然后增加注解。代码运行读取注解信息时,调用Class实现的AnnotatedElement反射接口函数,示例代码如下:

怎样理解Java的注解并运用注解编程

一、什么是注解

注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,

用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。

一般常用的注解可以分为三类:

1、Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。

2、类为元注解,元注解是用于定义注解的注解,包括@Retention(标明注解被保留的阶段)、@Target(标明注解使用的范围)、@Inherited(标明注解可继承)、@Documented(标明是否生成javadoc文档)

3、类为自定义注解,可以根据自己的需求定义注解

二、注解的用途

在看注解的用途之前,有必要简单的介绍下XML和注解区别,

注解:是一种分散式的元数据,与源代码紧绑定。

xml:是一种集中式的元数据,与源代码无绑定

当然网上存在各种XML与注解的辩论哪个更好,这里不作评论和介绍,主要介绍一下注解的主要用途:

生成文档,通过代码里标识的元数据生成javadoc文档。

编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。

编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。

运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例

三、注解的实现原理

实现注解三要素:

1、注解声明

2、使用注解的元素

3、操作注解使其起作用(注解处理器)

注解声明

首先我们让看一下java中的元注解(也就是上面提到的注解的注解),总共有4个如下:

@Target,@Retention,@Documented,@Inherited这4个元注解都是在jdk的java.lang.annotation包下面,

@Target:Target说明的是Annotation所修饰的对象范围。@Retention:

定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,

而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。

使用这个元注解可以对 Annotation的“生命周期”限制。@Documented:@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员

@Inherited:@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,

则这个annotation将被用于该class的子类。

注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。

当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,

反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

java.lang.reflect.AnnotatedElement 接口是所有程序元素(Class、Method和Constructor)的父接口,所以程序通过反射获取了某个类的AnnotatedElement对象之后,程序就可以调用该对象的如下四个个方法来访问Annotation信息:

  方法1:《T extends Annotation》 T getAnnotation(Class《T》 annotationClass): 返回改程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。

  方法2:Annotation getAnnotations():返回该程序元素上存在的所有注解。

  方法3:boolean is AnnotationPresent(Class《?extends Annotation》 annotationClass):判断该程序元素上是否