Java的反射机制和内省机制?及区别?(扩展-class类、简介Java发展史)

1、JAVA反射机制(Reflection)

在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意方法和属性;

这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

--->程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。

从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

但是JAVA有着一个非常突出的动态相关机制:Reflection,

用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。

换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造

(但不包括methods定义),并生成其对象实体、

或对其fields设值、或唤起其methods。这种“看透class”的能力 被称为

introspection(内省、内观、反省)。<---

Reflection和introspection是常被并提的两个术语。

2、Java内省机制(Introspector)

内省是Java语言对Bean类属性、事件的一种缺省处理方法。

例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。

--->一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,

然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),

通过这个属性描述器就可以获取某个属性对应的getter/setter方法,

然后我们就可以通过反射机制来调用这些方法。<---

3、内省和反射区别?

反射式在运行状态把Java类中的各种成分映射成相应的Java类,

可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。 

内省机制是通过反射来实现的,BeanInfo用来暴露一个bean的属性、方法和事件,

以后我们就可以操纵该JavaBean的属性

**********************************************

扩展:

1、class类

众所周知Java有个Object 类,是所有Java 类的继承根源,

其内声明了数个应该在所有Java 类中被改写的方法:hashCode()、

equals()、clone()、toString()、getClass()等。

其中getClass()返回一个Class 对象。

Class object 诞生管道--1)运用getClass()

2)运用Class.getSuperclass()

3)运用static method------Class.forName()(最常被使用)

2、关于Java编辑

詹姆斯·戈士林博士以“Java技术之父”闻名于世。他是Java技术的创始人,

 作为Sun研究院院士,他亲手设计了Java语言,完成了Java技术的原始编

译器和虚拟机。在他的带领下,Java现已成为互联网的标准编程模式以及

分布式企业级应用的事实标准,其跨平台的技术优势为网络计算带来了划

时代的变革。目前,戈士林博士积极致力于软件开发工具的研究,以使软件

开发工具的功能更强大,更容易为开发人员所使用,确保应用、服务开发的迅速完成。

Java技术是Sun公司在1995年5月正式推出的。二十多年来,Java已从编程语言

发展成为全球第一大通用开发平台。Java技术已为计算机行业主要公司所采纳,

同时也被越来越多的国际技术标准化组织所接受。1999年,Sun推出了以Java 2

平台为核心的J2EE、J2SE和J2ME三大平台。随着三大平台的迅速推进,在世界上

形成了一股巨大的Java应用浪潮。同时,Java技术还引发了一场无法停止的大变革,

为整个Java社团带来了巨大的潮水般的商业机会。

Java技术及其应用将有更大的发展。据IDC预计,自2001年起的其后5年内,采用

Java的IT产品的价值将翻番,在2006年将达到4.53亿美元,年增长率为14.9%。截

止到2003年5月,注册Java Developer Connection (JDC)的Java开发商超过300

万人,对JRE(Java运行环境)的下载达7,200万次。Sun在JavaOne 2003大会上确定

的目标是,在3~5年内使Java技术开发商从今天的300万发展到1,000万,以支持

Java技术这一全球领先技术平台的显赫地位。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页