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

下载本文档

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

文档简介

1/1JDK源码中的反射机制第一部分反射机制概述:运行时查询和修改类属性、方法、构造函数等信息。 2第二部分反射的实现原理:由Java虚拟机实现 4第三部分反射的优点:提高代码的灵活性 7第四部分反射的缺点:性能消耗较高 9第五部分反射的应用场景:框架开发、单元测试、代码生成、动态代理等。 11第六部分反射常用的类:Class、Field、Method、Constructor等。 14第七部分反射常用的方法:forName()、newInstance()、getClass()、getDeclaredMethod()等。 18第八部分Java9+的反射改进:API的简化和模块化的改进等 20

第一部分反射机制概述:运行时查询和修改类属性、方法、构造函数等信息。关键词关键要点反射机制的基本原理

1.反射机制允许程序在运行时查询和修改类属性、方法、构造函数等信息。

2.反射机制通过Java语言中的Class对象实现,Class对象包含了类的所有信息,包括属性、方法、构造函数等。

3.通过反射机制,可以动态地创建对象,调用方法,设置属性值等。

反射机制的应用场景

1.动态代理:反射机制可以创建动态代理类,动态代理类可以代理其他类的方法,并对方法进行增强或修改。

2.代码生成:反射机制可以动态地生成代码,例如,可以使用反射机制生成JavaBean类的get和set方法。

3.插件机制:反射机制可以实现插件机制,插件可以动态地加载到程序中,并与程序交互。

反射机制的优缺点

1.优点:灵活性强,可以动态地查询和修改类信息,可以实现动态代理、代码生成、插件机制等功能。

2.缺点:性能开销较大,因为反射机制需要动态地解析类信息,因此会比直接访问类信息慢一些。

反射机制的安全性

1.反射机制可以绕过访问控制,因为反射机制可以访问类的所有成员,包括私有成员。

2.反射机制可以被用来执行恶意代码,因为反射机制可以动态地创建对象和调用方法,而这些对象和方法可能是不安全的。

反射机制的局限性

1.反射机制不能获取类的私有信息,因为私有信息只能在类内部访问。

2.反射机制不能修改final修饰的类成员,因为final修饰的类成员是不可变的。

反射机制的趋势和前沿

1.反射机制在Java语言中是越来越重要的,因为Java语言越来越广泛地用于开发各种类型的应用程序。

2.反射机制正在向更强大的方向发展,例如,在Java9中,反射机制增加了对模块的支持。#JDK源码中的反射机制

概述

反射机制是Java语言的一项重要特性,它允许程序在运行时查询和修改类属性、方法、构造函数等信息。这使得Java程序具有很强的灵活性,能够适应各种不同的需求。

反射机制的实现

在JDK中,反射机制主要通过`java.lang.reflect`包中的类来实现。这些类包括`Class`、`Method`、`Field`和`Constructor`等。

#Class类

`Class`类代表一个Java类,它包含了该类的所有信息,包括类名、父类、接口、属性、方法和构造函数等。我们可以通过`Class.forName()`方法来获取一个类的`Class`对象。

#Method类

`Method`类代表一个Java方法,它包含了该方法的名称、参数类型、返回值类型和访问权限等信息。我们可以通过`Class.getMethods()`方法来获取一个类中的所有`Method`对象。

#Field类

`Field`类代表一个Java属性,它包含了该属性的名称、类型和访问权限等信息。我们可以通过`Class.getFields()`方法来获取一个类中的所有`Field`对象。

#Constructor类

`Constructor`类代表一个Java构造函数,它包含了该构造函数的参数类型和访问权限等信息。我们可以通过`Class.getConstructors()`方法来获取一个类中的所有`Constructor`对象。

反射机制的应用

反射机制在Java开发中有着广泛的应用,下面列举几个常见的应用场景:

*动态加载类:我们可以使用反射机制动态加载类,而无需在编译时指定类名。这在开发插件或扩展程序时非常有用。

*获取类信息:我们可以使用反射机制获取类的信息,例如类名、父类、接口、属性、方法和构造函数等。这在编写框架或工具时非常有用。

*修改类信息:我们可以使用反射机制修改类的信息,例如修改属性值、调用方法等。这在编写自动化测试或调试程序时非常有用。

反射机制的局限性

虽然反射机制很强大,但它也有一些局限性。例如,反射机制只能获取类公开的属性、方法和构造函数,而无法获取私有或受保护的成员。另外,反射机制会降低程序的性能,因为需要在运行时解析类信息。第二部分反射的实现原理:由Java虚拟机实现关键词关键要点【反射的含义】:

1.反射是指程序在运行时能够获取、修改及操作自身的数据结构和属性的一种机制。

2.Java反射机制是允许Java应用程序在运行时查询信息,动态地创建对象,调用方法,设置或获取字段值。

3.反射的使用可以使得程序更加灵活和可扩展,但也可能导致性能下降和安全问题。

【反射的实现原理】:

反射的实现原理

#1.类加载过程

Java虚拟机的类加载器负责将类文件加载到Java虚拟机中。类加载器的层次结构如下:

*启动类加载器(BootstrapClassLoader):负责加载核心类库,如java.lang包中的类。

*扩展类加载器(ExtensionClassLoader):负责加载扩展类库,如javax.swing包中的类。

*系统类加载器(SystemClassLoader):负责加载用户类,即通过类路径加载的类。

当Java虚拟机遇到一个类的引用时,它首先会检查这个类是否已经被加载。如果还没有加载,Java虚拟机就会调用类加载器来加载这个类。类加载器会首先从启动类加载器开始加载,如果启动类加载器无法加载这个类,则会委托给扩展类加载器,扩展类加载器如果无法加载这个类,则会委托给系统类加载器。

#2.字节码解析过程

当类加载器加载一个类文件时,它会将类文件中的字节码解析成Java虚拟机的指令。Java虚拟机的指令集是一套低级的机器指令,这些指令可以直接被Java虚拟机执行。

字节码解析器是一种软件,它负责将字节码解析成Java虚拟机的指令。字节码解析器通常是一个独立的程序,它可以单独运行,也可以被集成到Java虚拟机中。

#3.反射的实现

Java虚拟机通过提供一组反射API来支持反射。这些API允许程序动态地获取和修改类的信息,例如类的名称、类的属性、类的方法等。

反射API的主要组成部分包括:

*Class类:Class类代表一个Java类,它提供了关于类的各种信息,例如类的名称、类的属性、类的方法等。

*Method类:Method类代表一个Java方法,它提供了关于方法的各种信息,例如方法的名称、方法的参数、方法的返回值等。

*Field类:Field类代表一个Java属性,它提供了关于属性的各种信息,例如属性的名称、属性的类型、属性的值等。

开发人员可以使用反射API来实现各种功能,例如动态加载类、动态创建对象、动态调用方法等。

#4.反射的应用

反射技术在Java编程中有着广泛的应用,包括:

*动态加载类:开发人员可以使用反射API来动态加载类,例如当一个程序需要加载一个类时,程序可以使用反射API来动态加载这个类,而无需在编译时就指定这个类的名称。

*动态创建对象:开发人员可以使用反射API来动态创建对象,例如当一个程序需要创建一个对象时,程序可以使用反射API来动态创建这个对象,而无需在编译时就指定这个对象的类型。

*动态调用方法:开发人员可以使用反射API来动态调用方法,例如当一个程序需要调用一个方法时,程序可以使用反射API来动态调用这个方法,而无需在编译时就指定这个方法的名称。

*类型检查:开发人员可以使用反射API来进行类型检查,例如当一个程序需要检查一个对象的类型时,程序可以使用反射API来检查这个对象的类型。

*序列化和反序列化:开发人员可以使用反射API来实现序列化和反序列化,例如当一个程序需要将一个对象序列化为一串字节时,程序可以使用反射API来实现序列化,当程序需要将一串字节反序列化为一个对象时,程序可以使用反射API来实现反序列化。

反射技术是一种非常强大的技术,它可以帮助开发人员实现各种复杂的编程功能。但是,反射技术也可能会带来一些安全问题,因此开发人员在使用反射技术时需要注意安全问题。第三部分反射的优点:提高代码的灵活性关键词关键要点【反射的优点:提高代码的灵活性】

1.提高代码的灵活性,实现动态调用和生成对象:反射机制允许程序在运行时检查、修改和调用类或对象的属性和方法,从而实现了动态调用和生成对象。

2.实现跨平台开发:反射机制可以使得代码在不同的平台上运行,而无需重新编译,从而实现了跨平台开发。

3.简化开发流程:反射机制可以简化开发流程,使开发者能够快速地创建和修改对象,而无需编写大量的重复代码。

【反射的优点:实现组件化开发】

反射的优点

#1.提高代码的灵活性

反射机制允许程序在运行时检查和修改类的结构、属性和方法。这使得程序具有很强的灵活性,可以根据不同的情况动态地生成和修改代码。

例如,在编写框架时,我们经常需要根据不同的配置文件来生成不同的对象。使用反射机制,我们可以很容易地实现这个功能。只需要在配置文件中指定类的名称和属性的值,程序就可以自动生成相应的对象。

#2.实现动态调用和生成对象

反射机制还可以实现动态调用和生成对象。这意味着程序可以在运行时根据不同的条件来决定调用哪个方法或生成哪个对象。

例如,在编写一个测试框架时,我们需要根据不同的测试用例来调用不同的测试方法。使用反射机制,我们可以很容易地实现这个功能。只需要将测试用例和要调用的方法名写入配置文件中,程序就可以自动调用相应的测试方法。

#3.其他优点

反射机制还具有其他一些优点,包括:

*提高代码的可维护性:反射机制可以使代码更易于维护。因为我们可以通过反射机制来检查类的结构和属性,所以我们可以很容易地找到需要修改的地方。

*提高代码的可重用性:反射机制可以使代码更易于重用。因为我们可以通过反射机制来生成和修改对象,所以我们可以很容易地将代码移植到不同的环境中。

*提高代码的安全性:反射机制可以提高代码的安全性。因为我们可以通过反射机制来检查类的权限,所以我们可以防止未经授权的代码访问我们的数据。

总之,反射机制是一个非常强大的工具,可以帮助我们编写出更灵活、更易于维护和更易于重用的代码。第四部分反射的缺点:性能消耗较高关键词关键要点性能消耗较高

1.反射机制在运行时需要动态加载类和生成对象,这比直接使用类和对象要耗费更多的时间和资源,特别是当反射操作频繁或处理大量对象时,性能消耗会更加明显。

2.反射机制需要额外的内存开销,因为需要存储类和方法的元数据信息,这可能会导致内存使用量增加,影响程序的整体性能。

3.反射机制可能导致代码的可读性和可维护性下降,因为需要使用复杂的反射API来访问类和对象的信息和方法,这可能会使代码难以理解和维护。

安全性较差

1.反射机制允许程序在运行时修改类和对象的结构和行为,这可能会导致安全漏洞,例如恶意代码可以通过反射机制绕过安全检查或访问私有数据。

2.反射机制允许程序动态加载和执行代码,这可能会导致安全风险,例如恶意代码可以通过反射机制加载和执行,从而对系统造成危害。

3.反射机制可能导致信息泄露,因为程序可以通过反射机制访问和修改私有信息,例如密码或敏感数据,这可能会导致安全问题。

容易破坏程序健壮性

1.反射机制的使用可能会导致程序的健壮性下降,因为反射操作可能会导致异常或错误,例如当反射操作失败或访问不存在的类或方法时,可能会导致程序崩溃或出现运行时错误。

2.反射机制可能会导致程序的稳定性下降,因为反射操作可能会改变程序的运行时行为,例如当反射操作动态修改类或对象时,可能会导致程序行为不稳定或不可预测。

3.反射机制可能会导致程序的可移植性下降,因为反射操作依赖于底层平台和JVM的实现,这可能会导致程序在不同平台或JVM版本上运行时出现问题。#JDK源码中的反射机制之反射的缺点

性能消耗较高

反射是一种动态获取对象属性和方法的机制,它不需要在编译时确定对象类型,因此在运行时需要额外的处理,导致性能消耗较高。主要原因在于:

-反射需要在运行时动态获取对象类型,而这是一种比编译时确定对象类型更复杂的操作。

-反射需要通过反射API来访问对象的属性和方法,而这比直接访问对象属性和方法要慢。

-反射需要在运行时动态创建新的对象,而这是一种比在编译时创建新对象更复杂的操作。

安全性较差

反射机制允许访问对象的私有属性和方法,这可能导致安全问题。例如,恶意代码可以利用反射机制来访问对象的私有属性,从而获取敏感信息或破坏对象的状态。

容易破坏程序健壮性

反射机制允许在运行时修改对象的属性和方法,这可能会破坏程序的健壮性。例如,恶意代码可以利用反射机制来修改对象的属性,从而导致程序崩溃或产生错误的输出。

为了避免反射机制带来的缺点,可以采用以下措施:

-尽量避免使用反射机制,只有在确实需要的时候才使用。

-谨慎使用反射机制来访问对象的私有属性和方法。

-在使用反射机制之前,应仔细考虑其潜在的安全风险。

结论

反射机制是一种强大的工具,它可以用来动态获取对象属性和方法,并在运行时修改对象的属性和方法。然而,反射机制也存在一些缺点,包括性能消耗较高、安全性较差和容易破坏程序健壮性。因此,在使用反射机制之前,应仔细考虑其潜在的优点和缺点。第五部分反射的应用场景:框架开发、单元测试、代码生成、动态代理等。关键词关键要点框架开发

1.反射可以实现框架的可扩展性,允许开发者在运行时动态加载和实例化类,从而无需修改框架本身的代码,也不需要重新编译。

2.反射可以实现框架的灵活性,允许开发者在运行时修改类的行为,例如,通过反射可以动态改变方法的实现,或者动态生成新的类。

3.反射可以实现框架的安全性,允许开发者在运行时检查类和方法的访问权限,从而防止未授权的访问。

单元测试

1.反射可以实现单元测试的自动化,允许开发者在运行时动态生成测试数据和测试用例,从而减少了手动创建测试数据和测试用例的工作量。

2.反射可以实现单元测试的可重用性,允许开发者将相同的测试用例应用于不同的类和方法,从而提高了测试效率。

3.反射可以实现单元测试的灵活性,允许开发者在运行时修改测试用例的行为,例如,可以通过反射动态改变测试数据的生成方式,或者动态生成新的测试用例。

代码生成

1.反射可以实现代码的自动生成,允许开发者在运行时动态生成代码,例如,可以通过反射读取类和方法的元数据,并根据元数据生成相应的代码。

2.反射可以实现代码的优化,允许开发者在运行时动态修改代码,例如,可以通过反射动态调整方法的实现,或者动态生成新的代码,从而提高代码的性能。

3.反射可以实现代码的可重用性,允许开发者将相同的代码应用于不同的类和方法,从而提高了代码开发效率。

动态代理

1.反射可以实现动态代理,允许开发者在运行时动态生成代理类,从而代理真实类的方法调用。

2.反射可以实现动态代理的灵活性,允许开发者在运行时修改代理类的行为,例如,可以通过反射动态改变代理类的方法实现,或者动态生成新的代理类。

3.反射可以实现动态代理的可重用性,允许开发者将相同的代理类应用于不同的真实类,从而提高了代码开发效率。

Java虚拟机(JVM)

1.反射是Java虚拟机(JVM)提供的一项功能,允许程序在运行时检查和修改类的行为。

2.反射是Java语言中一项重要的特性,它允许程序员在运行时动态地检查和修改类的行为。

3.反射被广泛用于框架开发、单元测试、代码生成、动态代理等领域。

Java反射API

1.Java反射API是Java语言中用来实现反射功能的API。

2.Java反射API提供了丰富的类和方法,允许程序员在运行时检查和修改类的行为。

3.Java反射API是Java语言中一项重要的工具,它被广泛用于框架开发、单元测试、代码生成、动态代理等领域。反射的应用场景

反射在Java开发中有着广泛的应用,其具体应用场景包括:

#框架开发

反射在框架开发中扮演着重要的角色,它允许框架以一种灵活、动态的方式与应用程序进行交互,从而实现扩展性和灵活性。框架可以利用反射机制来加载、实例化和调用应用程序中的类和方法,而无需在编译时指定这些类和方法的具体类型。这使得框架可以轻松地与不同的应用程序进行集成,并提供统一的编程接口。一些流行的Java框架,如Spring、Hibernate和MyBatis,都广泛使用了反射机制。

#单元测试

在单元测试中,反射机制可以用于动态创建测试用例,并对测试结果进行验证。通过反射,测试框架可以访问和修改被测类和方法的内部状态,从而覆盖更多的测试场景。此外,反射还可以用于模拟外部依赖项,以便在测试过程中隔离被测代码,提高测试的可靠性和可维护性。

#代码生成

反射机制在代码生成中也有着重要的应用。代码生成工具可以利用反射来分析应用程序中的类和方法,并根据这些信息自动生成代码。这可以极大地提高开发效率,并减少代码冗余和错误。例如,一些代码生成工具可以根据数据库表结构自动生成数据访问对象(DAO)和实体类,而无需手动编写这些代码。

#动态代理

反射机制是实现动态代理的基础。动态代理是一种设计模式,它允许在运行时创建代理类,代理类可以拦截和修改目标对象的函数调用。动态代理在许多场景下都有应用,例如:

*安全代理:动态代理可以用于对目标对象进行访问控制,确保只有授权用户才能访问某些方法。

*性能代理:动态代理可以用于对目标对象进行性能优化,例如,通过缓存结果来减少方法调用的开销。

*日志代理:动态代理可以用于对目标对象的方法调用进行日志记录,以便跟踪应用程序的行为。

#其他应用场景

除了上述应用场景外,反射机制在Java开发中还有许多其他应用,例如:

*类型检查:反射可以用于对给定的对象进行类型检查,以确定其是否属于某个类或接口。

*类加载:反射可以用于加载和实例化类,而无需在编译时指定这些类的具体名称。

*字段和方法访问:反射可以用于访问和修改类的字段和方法,包括私有字段和方法。

*注解处理:反射可以用于处理类和方法上的注解,并根据注解信息执行相应的操作。第六部分反射常用的类:Class、Field、Method、Constructor等。关键词关键要点主题名称:Java反射机制概述

1.Java反射机制是一种编程技术,允许程序在运行时检查和修改类的属性和行为。

2.反射机制提供了对Java虚拟机(JVM)中类和对象的动态访问权限。

3.开发人员可以使用反射机制来创建和修改对象、调用方法、获取和设置字段值,以及枚举类的属性。

主题名称:Class类

反射常用的类

Java反射机制主要通过以下几个类来实现:

*Class类:表示Java中的类。

*Field类:表示Java中的字段。

*Method类:表示Java中的方法。

*Constructor类:表示Java中的构造函数。

#Class类

Class类是Java反射机制的核心类,它代表着Java中的类。Class类可以获取类名、类修饰符、父类、实现的接口、字段、方法、构造函数等信息。

*getName()方法:获取类的名称。

*getModifiers()方法:获取类的修饰符。

*getSuperclass()方法:获取类的父类。

*getInterfaces()方法:获取类实现的接口。

*getFields()方法:获取类的所有字段。

*getMethods()方法:获取类的所有方法。

*getConstructors()方法:获取类的所有构造函数。

#Field类

Field类表示Java中的字段。Field类可以获取字段名、字段类型、字段修饰符、字段值等信息。

*getName()方法:获取字段的名称。

*getType()方法:获取字段的类型。

*getModifiers()方法:获取字段的修饰符。

*get()方法:获取字段的值。

*set()方法:设置字段的值。

#Method类

Method类表示Java中的方法。Method类可以获取方法名、方法参数类型、方法返回值类型、方法修饰符、方法异常等信息。

*getName()方法:获取方法的名称。

*getParameterTypes()方法:获取方法的参数类型。

*getReturnType()方法:获取方法的返回值类型。

*getModifiers()方法:获取方法的修饰符。

*getExceptionTypes()方法:获取方法抛出的异常。

*invoke()方法:调用方法。

#Constructor类

Constructor类表示Java中的构造函数。Constructor类可以获取构造函数名、构造函数参数类型、构造函数修饰符、构造函数异常等信息。

*getName()方法:获取构造函数的名称。

*getParameterTypes()方法:获取构造函数的参数类型。

*getModifiers()方法:获取构造函数的修饰符。

*getExceptionTypes()方法:获取构造函数抛出的异常。

*newInstance()方法:创建新的对象。

反射机制的应用

反射机制在Java开发中有着广泛的应用。以下是一些常见的应用场景:

*动态加载类

*动态创建对象

*动态调用方法

*动态获取字段值

*动态设置字段值

*动态生成代理类

*单元测试

总结

反射机制是Java语言提供的一套用于在运行时检查和修改类的信息和行为的机制。反射机制可以获取类的信息、创建对象、调用方法、获取和设置字段值等。反射机制在Java开发中有着广泛的应用,例如,动态加载类、动态创建对象、动态调用方法、动态获取字段值、动态设置字段值、动态生成代理类和单元测试等。第七部分反射常用的方法:forName()、newInstance()、getClass()、getDeclaredMethod()等。关键词关键要点【forName()方法】:

1.forName()方法用于根据类名称获取Class对象,它是反射机制中常用的方法之一。

2.forName()方法可以接收一个字符串作为参数,表示要获取的类的名称,并返回一个Class对象。

3.forName()方法可以获取到已加载的类,也可以通过加载器加载尚未加载的类。

【newInstance()方法】:

#JDK源码中的反射机制

反射常用的方法

#`forName()`方法

`forName()`方法用于获取类的对象。该方法接受一个字符串参数,该字符串参数指定要获取的类的名称。`forName()`方法返回一个`Class`对象,该对象代表指定的类。

```java

Class<?>clazz=Class.forName("java.lang.String");

```

#`newInstance()`方法

`newInstance()`方法用于创建一个类的实例。该方法接受一个`Class`对象作为参数,并返回该类的实例。

```java

Stringstr=(String)clazz.newInstance();

```

#`getClass()`方法

`getClass()`方法用于获取对象的类对象。该方法接受一个对象作为参数,并返回该对象所属的类的`Class`对象。

```java

Class<?>clazz=str.getClass();

```

#`getDeclaredMethod()`方法

`getDeclaredMethod()`方法用于获取类的声明方法。该方法接受一个字符串参数,该字符串参数指定要获取的方法的名称,以及一个可变数量的参数类型参数。`getDeclaredMethod()`方法返回一个`Method`对象,该对象代表指定的方法。

```java

Methodmethod=clazz.getDeclaredMethod("length");

```

#`invoke()`方法

`invoke()`方法用于调用方法。该方法接受一个对象作为参数,该对象是方法所属的类或接口的实例,以及一个可变数量的参数参数,用作方法的参数。`invoke()`方法返回一个对象,该对象是方法的返回值。

```java

intlength=(int)method.invoke(str);

```第八部分Java9+的反射改进:API的简化和模块化的改进等关键词关键要点Java9+的反射改进:API的简化

1.减少了冗长的代码并提高了代码的可读性,从而简化了反射API。

2.为开发人员在使用反射API时提供了更多的便利。

3.统一了Java平台模块系统的模块访问控制,使得反射更加安全。

Java9+的反射改进:模块化的改进

1.将Java反射API模块化,使得反射更加健壮和灵活。

2.允许开发人员在需要时加载和卸载反射模块,从而提高了Java应用程序的性能。

3.降低了对Java虚拟机的依赖,使得反射更加独立。

Java9+的反射改进:性能的改进

1.通过在Java虚拟机中引入新的反射优化技术,提高了反射的性能。

2.降低了反射操作对Java应用程序性能的影响,使得反射更加高效。

3.减少了反射操作对Java应用程序内存使用量的影响,使得反射更加节约内存。

Java9+的反射改进:安全性的改进

1.通过引入新的安全机制,提高了反射的安全性。

2.减少了反射API的攻击面,使得反射更加难以被攻击。

3.降低了反射操作对Java应用程序安全性的影响,使得反射更加可靠。

Java9+的反射改进:稳定性的改进

1.提高了Java反射API的稳定性,减少了反射API的bug数量。

2.通过引入新的稳定机制,提高了反射的稳定性。

3.降低了反射操作对Java应用程序稳定性的影响,使得反射更加稳定。

Java9+的反射改进:可扩展性的改进

1.通过引入新的扩展机制,提高了反射的可扩展性。

2.允许开发人员在需要时扩展反射API,从而提高了反射的可定制性。

3.降低了反射操作对Java应用程序可扩展性的影响,使得反射更加可扩展。J

温馨提示

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

评论

0/150

提交评论