一道笔试题:请谈谈java中反射机制的意义,并列举几个成功运用反射机制的框架库。哪位高人能给我说说啊!谢了哈! 一道笔试题:请谈谈java中反射机制的意义,并列举几个成功运用反射机制的框架库。哪位高人能给我说说啊!谢了哈! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类的自动化测试。Tomcat运行ServletStruts,Spring,Tomcat加载某些组件,都可能是反射的。 但凡一个 class 的全路径以字符串的形式出现在程序中或者是配置文件中,大概就是要被以反射的形式加载了~~ JUnit用了反射机制插一段实例程序(摘自Junit)public TestSuite(final Class theClass) { fName = theClass.getName(); try { getTestConstructor(theClass); // Avoid generating multiple error // messages } catch (NoSuchMethodException e) { addTest(warning("Class " + theClass.getName() + " has no public constructor TestCase(String name) or TestCase()")); return; } if (!Modifier.isPublic(theClass.getModifiers())) { addTest(warning("Class " + theClass.getName() + " is not public")); return; } Class superClass = theClass; Vector names = new Vector(); while (Test.class.isAssignableFrom(superClass)) { Method[] methods = superClass.getDeclaredMethods(); for (int i = 0; i < methods.length; i++) { addTestMethod(methods[i], names, theClass); } superClass = superClass.getSuperclass(); } if (fTests.size() == 0) addTest(warning("No tests found in " + theClass.getName())); } 刚给别人贴了一段代码,顺手也贴在这里吧,猜猜看这个是干什么的public static void mapObjectToRecord(Object obj, ResultSet rs){ if (obj!=null || rs!=null){ String fieldName; Class cla=obj.getClass(); StringBuffer setterName; try { ResultSetMetaData rsmeta=rs.getMetaData(); int columnCount=rsmeta.getColumnCount(); Field[] fields =obj.getClass().getDeclaredFields(); for (int i=1;i<=columnCount;i++){ String columnName=rsmeta.getColumnName(i); try { for (Field field:fields){ fieldName=field.getName(); if (field.getAnnotation(DBReadOnly.class) == null) { if (fieldName.equalsIgnoreCase(columnName)) { setterName = new StringBuffer("get"); setterName.append(fieldName.substring(0, 1) .toUpperCase()); setterName.append(fieldName.substring(1)); Method method = cla.getMethod(setterName .toString(), new Class[] {}); Object value = method.invoke(obj, new Object[] {}); rs.updateObject(i, value); } } } } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } }} java利用进程调用BAT问题 请教两个JTextArea相关的问题 网络编程出错 ★★★★★java中经常碰到的一个问题★★★★★ 急!数据缓存问题 Struts2 optiontransferselect标签老提示错误。。。。 新手请教SDK和JDK是不是同一个东西? 阅读thinking in java遇到了一个内部类的小问题。 如何实现float 到 int 的类型转换,string 到 int 的类型转换? 新手:在jbuilder7.0下怎样编译hello world!谢谢!急! 为啥我的每个程序都有问题。。 package 的奇怪的问题??帮忙看看
public TestSuite(final Class theClass) {
fName = theClass.getName();
try {
getTestConstructor(theClass); // Avoid generating multiple error
// messages
} catch (NoSuchMethodException e) {
addTest(warning("Class "
+ theClass.getName()
+ " has no public constructor TestCase(String name) or TestCase()"));
return;
} if (!Modifier.isPublic(theClass.getModifiers())) {
addTest(warning("Class " + theClass.getName() + " is not public"));
return;
} Class superClass = theClass;
Vector names = new Vector();
while (Test.class.isAssignableFrom(superClass)) {
Method[] methods = superClass.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
addTestMethod(methods[i], names, theClass);
}
superClass = superClass.getSuperclass();
}
if (fTests.size() == 0)
addTest(warning("No tests found in " + theClass.getName()));
}
public static void mapObjectToRecord(Object obj, ResultSet rs){
if (obj!=null || rs!=null){
String fieldName;
Class cla=obj.getClass();
StringBuffer setterName;
try {
ResultSetMetaData rsmeta=rs.getMetaData();
int columnCount=rsmeta.getColumnCount();
Field[] fields =obj.getClass().getDeclaredFields();
for (int i=1;i<=columnCount;i++){
String columnName=rsmeta.getColumnName(i);
try {
for (Field field:fields){
fieldName=field.getName();
if (field.getAnnotation(DBReadOnly.class) == null) {
if (fieldName.equalsIgnoreCase(columnName)) {
setterName = new StringBuffer("get");
setterName.append(fieldName.substring(0, 1)
.toUpperCase());
setterName.append(fieldName.substring(1));
Method method = cla.getMethod(setterName
.toString(), new Class[] {});
Object value = method.invoke(obj,
new Object[] {});
rs.updateObject(i, value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
} }
} catch (Exception e) {
e.printStackTrace();
}
}
}