JDK源码中的注解机制_第1页
JDK源码中的注解机制_第2页
JDK源码中的注解机制_第3页
JDK源码中的注解机制_第4页
JDK源码中的注解机制_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1JDK源码中的注解机制第一部分注解的基本概念与作用 2第二部分注解的语法与使用规范 5第三部分注解的类型与分类 7第四部分注解处理器的作用与原理 11第五部分JDK源码中的注解使用案例 14第六部分注解机制在JDK源码中的作用 16第七部分注解机制的优缺点与应用范围 19第八部分注解机制的发展趋势与展望 21

第一部分注解的基本概念与作用关键词关键要点【注解的基本概念】:

1.注解是一种元数据,可以附加到类、方法、字段或代码块上,用于提供有关代码的附加信息。

2.注解可以由程序员自定义,也可以使用标准库或第三方库提供的注解。

3.注解可以被编译器、解释器或其他工具处理,从而在运行时对代码的行为产生影响。

【注解的作用】:

#JDK源码中的注解机制

注解的基本概念与作用

一、注解概念

注解,本质上是一种代码级别的元数据(metadata),用来描述代码中的元素(如类、方法、字段等)。注解使得代码更加具有自解释性、可读性。

二、注解作用

注解的具体作用可以概括为以下几点:

1.代码自解释性

注解可以提高代码的可读性、自解释性。通过在代码中添加注解,开发人员可以描述类、方法、字段等元素的用途、语义、约束条件等信息。当其他开发人员阅读代码时,可以通过这些信息更好地理解代码的含义、目的,减少代码注释的编写,提高代码的可维护性。

2.代码的可扩展性

注解可以为代码添加额外的信息,这些信息可以被编译器、解释器或其他工具解析和处理。这样,可以在不修改代码的情况下,扩展代码的功能。例如,Spring框架大量使用了注解,通过注解,开发人员可以方便地配置和扩展Spring应用。

3.代码的安全性

注解可以被用来检查代码的合法性、安全性。例如,在参数类型检查中,可以通过注解来指定方法参数的类型,编译器会检查参数类型是否符合注解的约束。

4.代码的可测试性

注解可以帮助生成测试用例。例如,在单元测试框架中,可以使用注解来标注需要测试的方法,测试框架会自动生成测试用例。

5.开发效率提升

注解简化了代码的编写,提高了开发效率。例如,在Spring框架中,通过使用注解,开发人员可以方便地进行依赖注入、事务管理等操作,而不需要编写复杂的代码。

三、注解分类

Java语言中的注解主要分为以下几类:

1.标准注解

标准注解是Java语言内置的注解,由Java平台提供。这些注解包括@Override、@Deprecated、@SuppressWarnings等。

2.第三方注解

第三方注解是由第三方库或框架提供的注解。例如,Spring框架、Hibernate框架都定义了自己的注解。

3.自定義注解

自定义注解是开发人员自己定义的注解。开发人员可以通过自定义注解来扩展Java语言的功能,满足特定的需求。

四、注解语法

注解的语法如下:

```

@注解名(参数列表)

```

注解名是注解的类型,参数列表是注解的参数。注解的参数可以是基本数据类型、字符串、枚举类型、类类型等。

五、注解解析流程

注解的解析流程如下:

1.加载注解

当Java编译器编译一个类时,它会加载类中使用的所有注解。

2.处理注解

Java编译器会根据注解的类型调用不同的注解处理器来处理注解。注解处理器负责解析注解参数、生成字节码等操作。

3.生成字节码

Java编译器会生成包含注解信息的字节码。

4.运行时解析注解

当Java虚拟机(JVM)运行一个类时,它会解析类中的注解。第二部分注解的语法与使用规范关键词关键要点【注解的语法与使用规范】:

1.注解的语法格式为`@<注解名>([<属性名>=<属性值>,...])`,其中`<注解名>`是注解的名称,`<属性名>`是注解的属性名称,`<属性值>`是注解属性的值,属性值可以用字符串、数字、布尔值或数组等类型的值。

2.注解可以修饰类、方法、字段、参数、局部变量等元素,不同的元素可以使用不同的注解。

3.注解可以用来提供元数据信息,元数据信息可以被编译器、运行时环境或其他工具使用。

【注解的分类】:

注解的语法与使用规范

注解是一种用于向编译器提供附加信息的特殊语法结构。它可以用来标记代码,以便编译器能够根据注解的内容生成额外的代码或执行特定的操作。注解通常以`@`符号开头,后接注解的名称和参数列表。

#语法

注解类型声明

注解类型声明用于定义一个新的注解类型。注解类型声明的语法如下:

```

//注解成员声明

}

```

其中,`InterfaceName`是注解类型的名称,`@interface`关键字表示这是一个注解类型声明,大括号内是注解成员声明。

注解成员声明

注解成员声明用于定义注解类型的成员。注解成员声明的语法如下:

```

ModifierTypeTypeVariableName=DefaultValue;

```

其中,`ModifierType`是修饰符类型,`Type`是变量类型,`VariableName`是变量名,`DefaultValue`是默认值。

注解成员声明可以有多种修饰符,包括`public`、`protected`、`private`、`abstract`、`static`、`final`、`transient`、`volatile`和`synchronized`。

注解成员声明的类型可以是任何基本类型、引用类型或枚举类型。

注解成员声明的默认值可以是任何常量表达式。

注解使用

注解可以使用在类、方法、字段、参数和局部变量上。注解的使用语法如下:

```

@AnnotationName(Argument1,Argument2,...)

```

其中,`AnnotationName`是注解的名称,圆括号内是注解的参数列表。

#使用规范

在使用注解时,应遵循以下规范:

*注解只能用在类、方法、字段、参数和局部变量上。

*注解不能用在语句、表达式或块上。

*注解只能用在编译时已知的类型上。

*注解不能用在泛型类型上。

*注解不能用在内部类上。

*注解不能用在枚举类型上。

*注解不能用在注解类型上。

#常见注解

Java平台中定义了多种常见的注解,这些注解可以用于标记代码,以便编译器能够生成额外的代码或执行特定的操作。这些注解包括:

*`@Override`:表示方法覆盖了父类中的方法。

*`@Deprecated`:表示方法或类已过时,不建议使用。

*`@SuppressWarnings`:压制编译器警告。

*`@SafeVarargs`:表示方法可以安全地处理可变参数。

*`@FunctionalInterface`:表示接口是一个函数式接口。

*`@Repeatable`:表示注解可以重复使用。第三部分注解的类型与分类关键词关键要点注解的类型

1.标准注解:由Java语言本身定义的注解,如@Override、@Deprecated等。这些注解由Java编译器和Java虚拟机识别,用于检查代码的正确性和生成字节码。

2.元注解:用于描述其他注解的注解,如@Retention、@Target等。元注解可以用来指定注解的保留策略、作用范围等。

3.自定义注解:由开发人员自定义的注解。自定义注解可以用来标注代码中的元素,如类、方法、字段等,以便于代码的理解、维护和扩展。

注解的分类

1.元数据注解:用于提供有关代码元素的元数据信息,如@Author、@Version等。元数据注解可以帮助开发人员更好地理解代码的意图和用法。

2.行为注解:用于改变代码元素的行为,如@Override、@SuppressWarnings等。行为注解可以用来重写父类的方法、抑制编译器警告等。

3.配置注解:用于配置代码元素的行为,如@SpringBootApplication、@WebServlet等。配置注解可以用来指定SpringBoot应用程序的主类、Servlet的对应路径等。#JDK源码中的注解机制:注解的类型与分类

1.注解的类型

注解(Annotation)是一种可以在编译时收集信息的特殊类型元数据,用于修饰代码元素(类、方法、字段等)。根据JDK源码中的分类,注解主要分为以下几种类型:

#1.1标准注解

标准注解是JavaSE平台中定义的注解,具有固定的语义和语义化的名称,用于标记Java代码元素的特定特性或约束。标准注解包括:

*`@Override`:标记覆盖父类方法的方法。

*`@Deprecated`:标记被弃用的代码元素。

*`@SuppressWarnings`:抑制编译器警告。

*`@FunctionalInterface`:标记函数式接口。

*`@SafeVarargs`:标记可变参数方法。

*`@Target`:标记注解适用的目标类型。

*`@Retention`:标记注解在编译时或运行时的行为。

*`@Documented`:标记注解应包含在JavaDoc文档中。

*`@Inherited`:标记注解可以被子类继承。

#1.2元注解

元注解是用于修饰其他注解的注解,用于指定注解的语义和行为。元注解包括:

*`@Target`:指定注解适用的目标类型。

*`@Retention`:指定注解在编译时或运行时的行为。

*`@Documented`:指定注解应包含在JavaDoc文档中。

*`@Inherited`:指定注解可以被子类继承。

#1.3自定义注解

自定义注解是开发人员自定义定义的注解,可以根据需要指定注解的语义和行为。自定义注解可以用于各种目的,例如:

*标记代码元素的特定特性或约束。

*提供元数据以支持代码生成或代码分析工具。

*标记代码元素以方便测试或调试。

2.注解的分类

除了上述类型的分类之外,注解还可以根据其功能和语义进行分类。常见的注解分类包括:

#2.1结构注解

结构注解用于描述代码元素的结构或组织方式。常见的结构注解包括:

*`@Component`:标记Springbean组件。

*`@Controller`:标记SpringMVC控制器。

*`@Service`:标记Spring业务逻辑组件。

*`@Repository`:标记Spring数据访问组件。

#2.2行为注解

行为注解用于描述代码元素的行为或功能。常见的行为注解包括:

*`@PostMapping`:标记SpringMVCPOST请求处理方法。

*`@GetMapping`:标记SpringMVCGET请求处理方法。

*`@PutMapping`:标记SpringMVCPUT请求处理方法。

*`@DeleteMapping`:标记SpringMVCDELETE请求处理方法。

#2.3配置注解

配置注解用于配置代码元素的属性或行为。常见的配置注解包括:

*`@Qualifier`:标记Springbean的限定符。

*`@Autowired`:标记Springbean的自动注入。

*`@Value`:标记Springbean属性的值。

*`@Bean`:标记Springbean的定义。

#2.4元数据注解

元数据注解用于提供代码元素的元数据。常见的元数据注解包括:

*`@Author`:标记代码元素的作者。

*`@Version`:标记代码元素的版本。

*`@Date`:标记代码元素的日期。

*`@License`:标记代码元素的许可证。

#2.5安全注解

安全注解用于保护代码元素免受未经授权的访问。常见的安全注解包括:

*`@Secured`:标记SpringSecurity的受保护方法。

*`@RolesAllowed`:标记SpringSecurity允许的角色。

*`@PreAuthorize`:标记SpringSecurity的授权前置条件。

*`@PostAuthorize`:标记SpringSecurity的授权后置条件。

#2.6测试注解

测试注解用于标记代码元素以方便测试。常见的测试注解包括:

*`@Test`:标记JUnit测试方法。

*`@Before`:标记JUnit测试方法在测试方法执行之前执行。

*`@After`:标记JUnit测试方法在测试方法执行之后执行。

*`@BeforeClass`:标记JUnit测试类在所有测试方法执行之前执行。

*`@AfterClass`:标记JUnit测试类在所有测试方法执行之后执行。第四部分注解处理器的作用与原理关键词关键要点【注解处理器的工作流程】:

1.注解处理器在编译期间被调用。

2.注解处理器接收源代码中的注解作为输入,并生成新的源代码或其他类型的输出作为输出。

3.注解处理器可以在编译过程中执行各种任务,例如生成元数据、生成代码、验证代码或执行其他类型的分析。

【注解处理器的好处】:

#一、注解处理器的作用

注解处理器是一种工具,用于在编译时处理Java注解。它允许开发人员在Java代码中使用注解来指定其他工具或框架的行为,例如生成代码、验证代码或执行其他任务。

注解处理器可以用于各种目的,包括:

*代码生成:注解处理器可以用来生成其他代码。例如,Lombok是一个使用注解生成Java代码的流行库。

*验证代码:注解处理器可以用来验证代码是否符合一定的规则。例如,Checkstyle是一个使用注解来检查Java代码风格的工具。

*执行其他任务:注解处理器可以用来执行其他任务,例如生成文档、运行测试或部署应用程序。

#二、注解处理器的原理

注解处理器通过在编译时扫描Java源代码来工作。当注解处理器发现一个注解时,它会执行与该注解关联的处理逻辑。

注解处理器的处理逻辑可以分为三个阶段:

1.初始化阶段:在初始化阶段,注解处理器会收集有关编译环境的信息,例如源代码文件列表、类路径和编译器选项。

2.处理阶段:在处理阶段,注解处理器会扫描源代码文件并查找注解。当注解处理器发现一个注解时,它会执行与该注解关联的处理逻辑。

3.后处理阶段:在后处理阶段,注解处理器会生成输出。输出可以是其他代码、验证报告或其他类型的文件。

#三、注解处理器的使用

要使用注解处理器,您需要在您的Java项目中添加一个注解处理器库。注解处理器库是一个包含注解处理器类的JAR文件。

添加注解处理器库之后,您就可以在您的Java代码中使用注解来指定注解处理器的行为。例如,要使用Lombok生成代码,您可以在您的Java代码中使用`@Data`注解。

当您编译您的Java项目时,编译器会加载注解处理器库并执行注解处理器的处理逻辑。注解处理器将生成输出,例如其他代码、验证报告或其他类型的文件。

#四、注解处理器的优点和缺点

优点:

*注解处理器可以用来生成代码、验证代码和执行其他任务。

*注解处理器可以在编译时运行,因此可以捕获错误并防止它们进入生产环境。

*注解处理器可以用来提高代码的可读性和可维护性。

缺点:

*注解处理器可能会使编译过程变慢。

*注解处理器可能会引入错误,例如生成错误的代码或验证代码时出现误报。

*注解处理器可能会与其他工具或框架冲突。第五部分JDK源码中的注解使用案例关键词关键要点【一、注解在Java开发中的应用】:

1.注解用于为代码提供元数据,可以增强代码的可读性和可维护性。

2.注解可以用于生成文档、进行类型检查、甚至可以用来生成代码。

3.注解可以扩展Java编程语言,使开发人员可以定义自己的注解来满足特定需求。

【二、注解在Java库中的应用】:

JDK源码中的注解使用案例

在JDK源码中,注解被广泛用于标记和描述Java代码,从而提高代码的可读性和可维护性。下面列举一些JDK源码中常见的注解使用案例:

*@Override注解:用于标记一个方法重写了超类中的同名方法,以确保方法重写的一致性和正确性。

*@Deprecated注解:用于标记一个类、方法或字段已经过时,不推荐再使用,以便开发者在使用时能够及时了解并避免使用过时代码。

*@SuppressWarnings注解:用于抑制编译器对某些代码块的警告信息,以避免不必要的警告信息干扰代码的阅读和维护。

*@FunctionalInterface注解:用于标记一个接口是一个函数式接口,即只包含一个抽象方法的接口,以便编译器能够对其进行特殊优化。

*@Retention注解:用于指定注解在编译期间的行为,包括注解在Java虚拟机(JVM)中是否可见,以及注解是否可以被反射机制访问。

*@Target注解:用于指定注解可以应用于哪些类型的Java元素,包括类、方法、字段、构造函数、枚举、注解等。

*@Inherited注解:用于指定注解可以被子类继承,以便子类自动继承父类的注解。

*@Documented注解:用于指定注解应该被包含在JavaDoc文档中,以便开发人员能够在使用注解时了解其含义和用法。

*@Repeatable注解:用于指定注解可以重复使用,以便开发人员可以向一个Java元素应用多个相同的注解。

除了上述常见的注解使用案例之外,JDK源码中还存在许多其他注解,它们被用于各种各样的目的,例如:

*@Bean注解:用于标记一个类是一个Springbean,以便SpringIOC容器能够识别并注册该bean。

*@Configuration注解:用于标记一个类是一个Spring配置类,以便Spring能够自动扫描该类并加载其配置信息。

*@Autowired注解:用于标记一个类属性,以便SpringIOC容器能够自动注入该属性的值。

*@RequestMapping注解:用于标记一个SpringMVC控制器方法,以便Spring能够将该方法映射到特定的HTTP请求。

*@ResponseBody注解:用于标记一个SpringMVC控制器方法,以便Spring能够将方法的返回值直接作为HTTP响应体返回给客户端。

这些注解的使用案例仅仅是JDK源码中注解使用案例的一部分,随着Java语言和JDK的发展,注解的使用场景和范围还会进一步扩大。第六部分注解机制在JDK源码中的作用一、注解机制在JDK源码中的作用:元数据和反射

在JDK源码中,注解机制主要用于元数据和反射。

1.元数据

注解是元数据的一种,元数据是有关数据的数据,它用于描述数据本身。注解可以为类、方法、字段等元素提供描述信息,这些描述信息可以在运行时通过反射获取。例如,在JDK源码中,`@Deprecated`注解用于标记过时的类、方法或字段,`@SuppressWarnings`注解用于抑制编译器警告,`@Override`注解用于标记覆盖父类方法的方法。

2.反射

反射是Java语言的一项重要特性,它允许程序在运行时获取类的信息和操作类。注解机制与反射紧密相关,注解信息可以通过反射获取,并用于指导程序的行为。例如,在JDK源码中,`@Autowired`注解用于标记需要自动装配的字段,程序可以通过反射获取`@Autowired`注解,并根据注解信息自动装配字段。

二、注解机制在JDK源码中的具体应用

在JDK源码中,注解机制被广泛应用于各种模块和组件中,以下是一些具体的应用示例:

1.JavaBeans组件

在JavaBeans组件中,注解机制用于指定组件的属性、事件和方法。例如,`@property`注解用于指定组件的属性,`@event`注解用于指定组件的事件,`@method`注解用于指定组件的方法。

2.Spring框架

在Spring框架中,注解机制用于配置应用程序组件和管理组件的生命周期。例如,`@Component`注解用于标记组件,`@Autowired`注解用于自动装配组件,`@Scope`注解用于指定组件的作用域。

3.Hibernate框架

在Hibernate框架中,注解机制用于映射Java对象和数据库表之间的关系。例如,`@Entity`注解用于标记实体类,`@Table`注解用于指定实体类对应的数据库表,`@Column`注解用于指定实体类的字段对应的数据库列。

4.JUnit测试框架

在JUnit测试框架中,注解机制用于标记测试方法和管理测试用例的生命周期。例如,`@Test`注解用于标记测试方法,`@BeforeClass`注解用于在测试用例开始前执行的方法,`@AfterClass`注解用于在测试用例结束时执行的方法。

三、注解机制在JDK源码中的优势

注解机制在JDK源码中的使用带来了许多好处,主要包括:

1.提高代码可读性和可维护性

注解可以为代码提供额外的描述信息,这些描述信息可以在IDE中显示,也可以通过反射获取。这使得代码更容易阅读和理解,并提高代码的可维护性。

2.提高程序的灵活性

注解可以动态地影响程序的行为,这使得程序更加灵活。例如,`@Override`注解可以指定方法是否覆盖父类方法,`@SuppressWarnings`注解可以抑制编译器警告,`@Autowired`注解可以自动装配组件。

3.提高程序的安全性

注解可以用于标记敏感的数据和操作,这有助于提高程序的安全性。例如,`@Secure`注解可以用于标记敏感的数据,`@Audit`注解可以用于标记需要审计的操作。

四、注解机制在JDK源码中的局限性

虽然注解机制在JDK源码中带来了许多好处,但也有一些局限性,主要包括:

1.性能开销

注解信息需要存储在字节码文件中,这会增加字节码文件的大小,并可能导致程序启动和运行时性能下降。

2.安全性问题

注解信息可以在运行时通过反射获取,这可能会带来安全性问题。例如,攻击者可以利用反射修改注解信息,从而改变程序的行为。

3.复杂性

注解机制可能会增加代码的复杂性,特别是当注解大量使用时。这可能会导致程序难以阅读和理解,并降低程序的可维护性。

五、结论

注解机制在JDK源码中的使用带来了许多好处,包括提高代码可读性和可维护性、提高程序的灵活性、提高程序的安全性等。然而,注解机制也有一些局限性,包括性能开销、安全性问题、复杂性等。在使用注解机制时,需要权衡利弊,适当地使用注解机制,以发挥其优势,避免其局限性。第七部分注解机制的优缺点与应用范围关键词关键要点【注解机制的优点】:

1.简化了代码:注解可以减少代码中的注释数量,从而降低代码的复杂度并提高可读性。

2.增强代码的扩展性:注解可以用于定义元数据,元数据可以在运行时动态加载和修改,从而提高了代码的扩展性。

3.提供统一的编程接口:注解机制可以为不同语言和平台提供统一的编程接口,简化了不同平台之间的代码移植。

【注解机制的缺点】:

注解机制的优点:

1.增强代码可读性与理解性。在源码中增加注释文本,能够使代码更加清晰易懂。并且,注解可以被IDE或其他开发工具识别,以便在代码编写时提供相关信息。

2.增强编译器与工具的处理能力。利用注解机制可以对代码进行一些额外的处理,以便更好地适应不同情况。例如,可以在注解中指定某个方法是否可以被线程调用,以便编译器或工具能够自动生成相应的代码来确保线程安全。

3.方便代码的维护和扩展。通过注解机制,可以把代码的额外信息与代码本身分离开来,以便在代码修改和维护时更加方便。例如,可以通过注解机制标记需要重构的代码,以便在后续版本更容易找到并修改这些代码。

4.提供元数据信息。注解可以存储一些额外的信息,这些信息可以被各种工具和框架使用。例如,可以使用注解来指定某个类或者方法的用途,以便在文档生成、代码分析或单元测试时使用这些信息。

注解机制的缺点:

1.增加代码复杂性。使用注解机制可能会增加代码的复杂性,特别是当注解的数量较多时。在阅读和维护代码时,需要考虑注解的存在,这可能会增加代码理解和维护的难度。

2.增加了维护负担。当使用了注解机制时,在修改代码时需要同时考虑代码本身和注解的修改。如果代码和注解不一致,可能会导致程序出现问题。

3.注解可能被滥用。如果注解没有被正确使用,可能会导致代码的可读性和维护性降低。例如,如果在代码中滥用注解,可能会使代码难以理解和维护。

4.注解的兼容性问题。注解在不同的JDK版本或不同的框架中可能具有不同的含义,这可能会导致兼容性问题。在使用注解时,需要考虑注解的兼容性问题,以免导致程序出现问题。

注解机制的应用范围:

1.代码文档生成。利用注解机制可以自动生成代码文档。例如,可以使用Javadoc工具来解析代码中的注解,以便生成代码文档。

2.代码分析。利用注解机制可以对代码进行分析,以便识别潜在的错误或缺陷。例如,可以使用FindBugs工具来分析代码中的注解,以便发现潜在的错误或缺陷。

3.单元测试。利用注解机制可以标记需要进行单元测试的方法。例如,可以使用JUnit框架来标记需要进行单元测试的方法,以便在单元测试时自动执行这些方法。

4.代码重构。利用注解机制可以标记需要重构的代码。例如,可以使用RefactorIT工具来标记需要重构的代码,以便在重构时自动修改这些代码。

5.代码风格检查。利用注解机制可以对代码风格进行检查。例如,可以使用Checkstyle工具来检查代码风格,以便发现违反代码风格的代码。

6.代码性能分析。利用注解机制可以对代码性能进行分析。例如,可以使用JProfiler工具来分析代码性能,以便发现瓶颈代码。第八部分注解机制的发展趋势与展望关键词关键要点RESTful风格注解

1.提供更加简洁直观的API接口,便于开发人员理解和使用。

2.更加符合HTTP协议的规范,使应用程序更加易于维护和扩展。

3.支持多种请求方法,如GET、POST、PUT、DELETE等,满足不同操作需求。

微服务架构注解

1.支持分布式系统开发,使应用程序可以更容易地被分解成独立的服务。

2.提供服务发现、负载均衡和故障容错等功能,提高应用程序的可靠性和可用性。

3.支持跨语言、跨平台的开发,使应用程序可以更轻松地与其他系统集成。

安全注解

1.提供对应用程序安全性的保护,防止各种安全漏洞和攻击。

2.支持身份验证、授权和加密等功能,确保应用程序的数据和操作安全。

3.帮助开发人员轻松实现应用程序的安全需求,降低开发难度和风险。

元注解

1.允许在注解上使用其他注解,增强注解的灵活性。

2.使注解可以具有更多的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论