`
zxy861114
  • 浏览: 4088 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

也谈类反射

 
阅读更多
昨天我和同学讨论了一个问题:反射机制有什么好处?还有数据库操作时常用Class.forName("...")为什么?当时我兴趣不高,因为我觉得我没办法把这个问题讲好。

今天来仔细看一下:在得到反射机制好处前,我来稍稍提一下类的加载。一个class文件,被Class Loader子系统载进来时,它会读取二进制流,并将各种相关信息,如类名,超类,方法等放入方法区。并在堆上创建一个Class的对象。由方法区指向这个Class对象。类的加载分为显示加载与隐式加载。在显式加载中,它会加载自己的超类与接口,加载顺序与隐式加载这里不讨论。那么如果我们能够加载一个类,我们就能得到关于一个类的所有信息。在Java中为我们提供了两个方法,一个是Class.forName().另一个是ClassLoader.loadClass()来加载一个类,讲到这里对反射机制应该有一个比较清晰的了解了。

由上面类的加载的两个方法 可以组织第一个问题的答案了,反射机制有什么好处:它可以提供动态生成对象,能够非常灵活的组织我们的程序。

下面看一下第二个问题:一个类在加载之后,并不代表它完成了连接与初始化。Class.forName(String)它有一重载方法Class.forName(name, initialize, loader),其中第二个参数默认为true,代表它会完成连接与初始化,但如果为false,它就只会加载而已。ClassLoader.loadClass()则和Class.forName(name,false,loader)相似,只是更底层。

  那么我们又可以回答第二个问题啦,为什么数据库操作前要调用Class.forName().因为它会加载驱动类,并初始化它。其实我们在查看源码可知,它有一个静态代码态,会完成向DriverManager注册自己。
0
1
分享到:
评论

相关推荐

    候捷谈Java反射机制

    然而,反射也带来了一些潜在的问题,如性能损失、安全风险和易出错。由于反射可以访问私有成员和执行未公开的操作,如果不小心使用,可能会破坏封装性和安全性。因此,在使用反射时,需要谨慎评估其必要性和潜在影响...

    侯捷谈java反射机制.doc

    然而,反射虽然强大,但也有一些潜在的风险和性能问题。使用反射可能会破坏封装性,增加代码的复杂性和可维护性,同时反射操作通常比直接的方法调用慢。因此,除非必要,应谨慎使用反射。 总的来说,Java反射机制...

    Java反射技术浅谈.pdf

    Java反射技术浅谈 Java反射技术是一种强大的技术,它允许Java程序访问、检测和修改它自己的状态或行为。通过反射,Java程序可以加载一个运行时才知道名称的类,获取其完整的内部信息,并创建其对象,或者对其属性...

    Java反射技术浅谈 (1).pdf

    Java中的类反射就是一个在当前JVM中支持类、接口和对象内部省略的、类型安全的和可靠的API。它是通过java.lang.reflect包提供的,可以对类的能力进行分析反射,使程序代码能够访问装载到JVM中的类的内部信息,主要...

    【ASP.NET编程知识】浅谈.NET反射机制的性能优化 附实例下载.docx

    4. 尽量避免反射调用含`ref`或`out`参数的方法,因为这类方法的反射调用会更慢。 5. 对于.NET Core和.NET Framework,可以使用`Type.InvokeMember()`的替代方法,如`MethodInfo.Invoke()`,以提高反射调用的效率。 ...

    反射机制

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改私有成员,这在某些场景下极大地提高了...

    浅谈PHP的反射机制

    反射机制不仅仅局限于类,它还包括了对函数、扩展等的反射。 在详细介绍PHP反射机制前,首先需要了解什么是反射。反射机制本质上是一种元编程的手段,它允许程序在运行时分析或修改程序行为。在面向对象编程中,...

    七年级生物下册《神经调节的基本方式-反射》课件人教新课标版.ppt

    复杂反射则需要经过学习和经验积累才能形成,比如学生听到上课铃响后进教室的反射,这类反射通常与大脑皮层的高级中枢有关,尤其是涉及语言和认知的区域。 人类特有的复杂反射通常与语言文字有关,如谈梅止渴、...

    浅谈PHP的反射API

    PHP的反射API,即在PHP运行状态下,通过分析PHP程序,可以导出对象所属的类,方法,属性,参数等信息。 如何使用反射API 示例代码 Person.php Person类,包含一个成员变量和三个成员方法 获取$student对象的方法和...

    浅谈Python反射 & 单例模式

    在Python编程中,反射和单例模式是两种重要的设计原则,它们分别用于增强代码的动态性和控制类实例的创建。 **反射** 是一种允许程序在运行时检查和修改自身行为的能力。在Python中,由于其动态特性,反射得以广泛...

    聚类分析在非监督图像分类中的应用研究-浅谈遥感图像监督分类与非监督分类.pdf

    遥感技术通过卫星或飞机上的传感器,远距离感知地球表面的信息,收集反射或辐射的电磁波信息。通过分析这些数据可以获取地物的分布、类别等信息。遥感图像分类分为监督分类和非监督分类两大类。监督分类依赖于有标签...

    广东省河源市七年级生物下册 4.6.3神经调节的基本方式导学案2(无答案)(新版)新人教版(通用).doc

    这类反射涉及到大脑皮层的参与,可以更加灵活地适应环境。 【人类特有的反射】是指那些只有人类才具备的高级反射活动,通常涉及到语言和抽象思维,如【听到恐怖故事而感到恐惧】(谈虎色变)或【看到文字“酸梅”...

    七年级生物下册 4.6.3神经调节的基本方式学案(无答案)人教新课标版.doc

    【知识点详解】 1. **神经系统的调节作用**:在人体的生命活动中,神经系统起着至关重要的调节作用。无论是简单的日常活动还是复杂...同时,我们也认识到了大脑在复杂反射中的核心地位,以及不同反射类型的形成机制。

    广西桂林市七年级生物下册第4单元第6章第3节神经调节的基本方式导学案无答案新版新人教版.doc

    5. **人类特有的反射**:人类特有的反射通常涉及语言、文字的理解和应用,如听到“梅子”的话题就能引起唾液分泌(谈梅止渴),这是高级认知功能的体现。 6. **反射的结构基础**:反射的结构基础是反射弧,而不是...

Global site tag (gtag.js) - Google Analytics