|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!有关反射实际常识,请参考本站C#反射机制概论
有关C#中反射机制的实际常识,对照空洞和涩涩,这章拿一个复杂易懂的例子申明,反射机制的使用,个中包含依据设置文件中的信息,静态加载类实例的办法,反射为我们供应了静态实例化类的机制,可是因为它是运转时加载和其外部的一些成绩,以是反射的功能对照低。我们在实践事情中,可视情形使用反射机制。
界说了一个Car类,上面我们就使用反射机制来运转时加载它:
publicclassCar
{
privatestring_engin1;
privatestring_engin2;
publicstringEngin1
{
get{return_engin1;}
set{this._engin1=value;}
}
publicstringEngin2
{
get{return_engin2;}
set{_engin2=value;}
}
publicStringGetCar()
{
return"iamacar";
}
}
//反射实例的客户代码,在这是一个窗体;在窗体的Load事务中,界说了两种使用反射机制,静态天生实例的办法,第一个是使用反射中的Assembly类举行的;第二个是使用反射中的Activator类举行的。
usingSystem.Reflection;
usingSystem.Configuration;
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
Assemblya=Assembly.Load("ReflectionTest");
Carcar1=(Car)a.CreateInstance("ReflectionTest.Car");
this.textBox1.Text=car1.GetCar();
//依据设置文件来失掉类的信息,依据反射来初始化它
//要援用System.Configuration.dll
StringcarString=System.Configuration.ConfigurationManager.AppSettings["car"];
Typet=a.GetType(carString);
Carcar2=(Car)Activator.CreateInstance(t);
this.textBox2.Text=car2.GetCar().ToString();
}
}
设置文件的内容:
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<appSettings>
<addkey="car"value="ReflectionTest.Car"/>
</appSettings>
</configuration>
反射机制并非何等庞大,我们能够同过下面的例子看到,代码就几行,只需了解了反射机制的道理,我想,我们很简单把反射机制很好的使用在开辟中。不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听) |
|