一个利用java反射机制的例子
前一阵写了一篇“用策略模式操作数据库”的文章,一直想用反射机制实现一个测试的类, 今天终于能抽出点空,就写了一个,不过还没有实现把反射的类变量写在xml文件中,这只好下回有空再写了,呵呵
<span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> com;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.lang.reflect.Constructor;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.Map;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.HashMap;
</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Test </span><span id="_119_713_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_119_713_Open_Text"><span style="COLOR: #000000">{
</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="_162_711_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_162_711_Open_Text"><span style="COLOR: #000000">{
DataBaseContext dbc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> DataBaseContext();
DataBaseSuper dbs </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;
Map map </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> HashMap();
map.put(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">丁丁</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
map.put(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="_331_561_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_331_561_Open_Text"><span style="COLOR: #000000">{
</span><span id="_339_355_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="_339_355_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000">*具体的反射实现过程**</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">
Class cls </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Class.forName(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.Insert</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
Class partype</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Class.forName(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.util.Map</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
Constructor ct </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> cls.getConstructor(partype);
dbs </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (DataBaseSuper) ct.newInstance(map);
}</span></span><span style="COLOR: #000000">
</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (Throwable ex) </span><span id="_588_624_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_588_624_Open_Text"><span style="COLOR: #000000">{
System.err.println(ex);
}</span></span><span style="COLOR: #000000">
</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (dbs </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="_647_707_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_647_707_Open_Text"><span style="COLOR: #000000">{
dbc.setOperate(dbs);
dbc.excuteOperate();
}</span></span><span style="COLOR: #000000">
}</span></span><span style="COLOR: #000000">
}</span></span>
您可能感兴趣的文章:
Go语言学习之reflect包(The way to go)
JavaScript反射机制与继承:概念
c#反射调用类型成员的例子
Java 实例
Java反射(泛型擦除演示)的例子
C#反射的一些基本应用
golang的反射机制与实践(上)
C#反射实例学习入门及注意事项
c#反射实例学习
C#反射的使用方法