java invoke 传递参数问题
现在我有一个名为TestDemo的类,包含一个publicstaticStringmethod(Stringstr){returnstr;}的方法我想使用反射机制,然后使...
现在我有一个名为TestDemo的类,包含一个 public static String method(String str){return str;}的方法
我想使用反射机制,然后使用invoke来执行该方法,我该怎么写:
Class cl=Class.forName("TestDemo");
Method method=cl.getMethod("method", new Class[]{});
method.invoke(null,new Object[]{"hello_world"});
这样会说NoSuchMethodException,求大神指教该如何在invoke中给某个方法传递参数 展开
我想使用反射机制,然后使用invoke来执行该方法,我该怎么写:
Class cl=Class.forName("TestDemo");
Method method=cl.getMethod("method", new Class[]{});
method.invoke(null,new Object[]{"hello_world"});
这样会说NoSuchMethodException,求大神指教该如何在invoke中给某个方法传递参数 展开
4个回答
2013-01-31
展开全部
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i < sheet.length;i++){
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
System.out.println("rowNum ### "+rowNum);
for(int j=4;j < rowNum;j++){
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
Object objBean = objClass.newInstance();
if(cells!=null&&cells.length>0){
//对每个单元格进行循环
for(int k=0;k < cells.length;k++){
//读取当前单元格的值
String cellValue = cells[k].getContents();
System.out.println("cellValue"+cellValue);
try {
proName = field[k].getName();
ReflectgetMethod.invokeSet(objBean, proName, cellValue);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
listBean.add(objBean);
}
}
}
}
我这是在导入excel数据时候用到的,希望对你有用吧!
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i < sheet.length;i++){
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
System.out.println("rowNum ### "+rowNum);
for(int j=4;j < rowNum;j++){
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
Object objBean = objClass.newInstance();
if(cells!=null&&cells.length>0){
//对每个单元格进行循环
for(int k=0;k < cells.length;k++){
//读取当前单元格的值
String cellValue = cells[k].getContents();
System.out.println("cellValue"+cellValue);
try {
proName = field[k].getName();
ReflectgetMethod.invokeSet(objBean, proName, cellValue);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
listBean.add(objBean);
}
}
}
}
我这是在导入excel数据时候用到的,希望对你有用吧!
追问
完全没用,乱拷代码
展开全部
Method method=cl.getMethod("method", new Class[]{}); 这个参数传的不对。
Class[] cls = new Class[1];
cls[0] = String.class;
Method method=cl.getMethod("method", cls);
Class[] cls = new Class[1];
cls[0] = String.class;
Method method=cl.getMethod("method", cls);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class ReflectDemo {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("test.reflect.TestDemo");
Method method = clazz.getMethod("method", String.class);
method.invoke(null, "HelloWorld");
}
}
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("test.reflect.TestDemo");
Method method = clazz.getMethod("method", String.class);
method.invoke(null, "HelloWorld");
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Method method=cl.getMethod("method", String.class);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询