您的位置:首页 > 编程语言 > Java开发

java 反射机制详解

2007-10-26 13:19 579 查看
Java 的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性。
运用JavaBean 的最常见的问题是:根据指定的类名,类字段名和所对应的数据,得到该类的实例,下面的一个例子演示了这一实现。
-|Base.java //抽象基类
|Son1.java //基类扩展1
|Son2.java //基类扩展2
|Util.java
/**
* @author metaphy
* create 2005-4-14 9:06:56
* 说明:
*/
(1)Base.java 抽象基类只是一个定义
public abstract class Base {
}
(2)Son1.java /Son2.java 是已经实现的JavaBean
public class Son1 extends Base{
private int id ;
private String name ;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public void son1Method(String s){
System.out.println(s) ;
}
}
(3)
public class Son2 extends Base{
private int id;
private double salary;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
(4)Util.java 演示了如何根据指定的类名,类字段名和所对应的数据,得到一个类的实例
import java.lang.reflect.Method;
public class Util {
//此方法的最大好处是没有类名Son1,Son2 可以通过参数来指定,程序里面根本不用出现
public static Base convertStr2ServiceBean(String beanName,String fieldSetter,String paraValue){
Base base = null ;
try {
Class cls = Class.forName(beanName) ;
base = (Base)cls.newInstance() ;
Class[] paraTypes = new Class[]{String.class };
Method method = cls.getMethod(fieldSetter, paraTypes) ;
String[] paraValues = new String[]{paraValue} ;
method.invoke(base, paraValues) ;
} catch (Throwable e) {
System.err.println(e);
}
return base ;
}

public static void main(String[] args){
Son1 son1 =(Son1) Util.convertStr2ServiceBean("trying.reflect.Son1","setName","wang da sha");
System.out.println("son1.getName() :"+son1.getName()) ;
}
}
//调用结果:
//son1.getName() :wang da sha

谢谢!希望能给大家一点启发!
以上文章来源自网络,作者不祥。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: