欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java反射机制,java反射

来源: javaer 分享于  点击 38354 次 点评:137

java反射机制,java反射


下面是需要用到的代码和文件 

Demo_main.java

<span >package test;

public class Demo_main {
	Demo_main(){
		
		
	}
   public  void write(){
	   
	   System.out.println("类的对象获取成功");
   }
   
}</span>

Demo_class.java

<span >package  test;
import java.io.IOException;
import java.lang.*;
import java.util.Properties;
import java.util.Set;
import java.util.*;
public class Demo_class {
	private  static Map<String,Object>  objects=new HashMap<String ,Object>();
	static 
	{
		Properties  cfg=new Properties();
		
		try 
		{
			cfg.load(Demo_class.class.getResourceAsStream("/Class_name.properties"));
			Set keys=cfg.keySet();
			for(Object  key:keys)
			{
				String classname=(String )cfg.get(key);
				Object Objclass=Class.forName(classname).newInstance();//这里会出现异常可以将ioexception的io去掉就行
			    objects.put((String)key, Objclass);
			
			}
		}
		catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public static void main (String[] args)
	{
	   Object Objclass=objects.get("Demo_key1");
	    System.out.println(Objclass.toString());
	   Demo_main	a= (Demo_main)Objclass;
	   a.write();
	   
	}
}</span>

Class_name.properties 文件

name   Demo_key1

value  test.Demo_main

通过了下面这几句从配置文件获得类的名字放入一个Set容器中。

<span >Properties  cfg=new Properties();</span>

<span >cfg.load(Demo_class.class.getResourceAsStream("/Class_name.properties"));
Set keys=cfg.keySet();</span>
通过下面代码得到对象Objclass
<span >String classname=(String )cfg.get(key);
Object Objclass=Class.forName(classname).newInstance()</span>
通过下面代码执行
<span >Object Objclass=objects.get("Demo_key1");
	    System.out.println(Objclass.toString());
	   Demo_main	a= (Demo_main)Objclass;
	   a.write();</span>
注意在这里我是把得到的对象先放入了Hashmap中,因为你有可能在配置文件中加了多个对象,然后通过key匹配对象进行操作。通过配置文件得到对象这种方法便于了我们后期的维护。


相关文章

    暂无相关文章
相关栏目:

用户点评