读书人

通览 java 中的反照

发布时间: 2012-12-22 12:05:06 作者: rapoo

通览 java 中的反射
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);?
}?<span sty

读书人网 >编程

热点推荐