|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
反射,reflection,听其名就像照镜子一样,能够瞥见本人也能够瞥见他人的每部分。在java言语中这是一个很主要的特征。上面是来自sun公司官网关于反射的先容:
ReflectionisafeatureintheJavaprogramminglanguage.ItallowsanexecutingJavaprogramtoexamineor"introspect"uponitself,andmanipulateinternalpropertiesoftheprogram.Forexample,itspossibleforaJavaclasstoobtainthenamesofallitsmembersanddisplaythem.
TheabilitytoexamineandmanipulateaJavaclassfromwithinitselfmaynotsoundlikeverymuch,butinotherprogramminglanguagesthisfeaturesimplydoesntexist.Forexample,thereisnowayinaPascal,C,orC++programtoobtaininformationaboutthefunctionsdefinedwithinthatprogram.
OnetangibleuseofreflectionisinJavaBeans,wheresoftwarecomponentscanbemanipulatedvisuallyviaabuildertool.ThetoolusesreflectiontoobtainthepropertiesofJavacomponents(classes)astheyaredynamicallyloaded.
那末注释一下就是,反射是java言语的一个特征,它允程序在运转时(注重不是编译的时分)来举行自我反省而且对外部的成员举行操纵。比方它同意一个java的类猎取他一切的成员变量和办法而且显现出来。这个能特定我们不常看到,可是在其他的好比C大概C++言语中很不就存在这个特征。一个罕见的例子是在JavaBean中,一些组件能够经由过程一个机关器来操纵。这个机关器就是用的反射在静态加载的时分来猎取的java中类的属性的。
反射的前传:类范例ClassClass
java中有一个类很特别,就是Class类,良多伴侣在写程序的时分有效过好比Apple.class来检察范例信息,人人就能够把它了解为封装了类的信息,良多注释说Class类没有机关器,实际上是有的,只不外它的机关办法是private的(机关函数另有private的??有,如许是为了克制开辟者往本人创立Class类的实例)。
假如我们拿到一个类的范例信息,就能够使用反射猎取其各类成员和办法了。(注:Class从JDK1.5版本后就入手下手更多为泛型服务了)那末我们怎样拿到一个范例的信息呢?假定我们有一个Role类:- packageyui;
- /**
- *Abaseclasshavingsomeattributesandmethods
- *@authorOctobershiner
- *@since2012317
- *
- **/
- publicclassRole{
- privateStringname;
- privateStringtype;
- //Constructors
- publicRole(){
- System.out.println("ConstructorRole()isinvoking");
- }
- //公有机关器
- privateRole(Stringname){
- this.name=name;
- System.out.println("ConstructorRole(Stringname)isinvoking.");
- }
- //getandsetmethod
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetType(){
- returntype;
- }
- publicvoidsetType(Stringtype){
- this.type=type;
- }
- //overridethetoStringmethodtoshowtheclass
- @Override
- publicStringtoString(){
- return"Thisisarolecalled"+this.name;
- }
- }
复制代码 在没有对象实例的时分,次要有两种举措。- //取得类范例的两种体例
- Classcls1=Role.class;
- Classcls2=Class.forName("yui.Role");
复制代码 注重第二种体例中,forName中的参数必定是完全的类名(包名+类名),而且这个办法必要捕捉非常。现在失掉cls1就能够创立一个Role类的实例了,使用Class的newInstance办法相称于挪用类的默许的机关器- Objecto=cls1.newInstance();//创立一个实例
- //Objecto1=newRole();//与下面的办法等价
复制代码 如许就创立了一个对象,弱点是我们只能使用默许机关函数,由于Class的newInstance是不承受参数的,前面会讲到可承受参数的newInstance,第二,假如类的机关函数是private的,好比Class,我们仍然不克不及实例化其对象。
<p>
你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难 |
|