A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王振宇 黑马帝   /  2011-11-24 13:59  /  3411 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王振宇 于 2011-11-24 15:08 编辑

我的问题很简单,就是不知道怎么写!在线求解答
大致代码
我有个方法

  1. class MethodDemo{
  2.   public int show()
  3.   {
  4.     System.out.println("this is show() method");
  5.   }
  6. }
  7. class MethodTest
  8. {
  9.   public staitc void main(String[] args)
  10.   {
  11.      MethodDemo md = new MethodDemo();
  12.      Method method = md.getClass().getMethod("show",????);
  13.      method.invoke(md,??????);
  14.   }
  15. }
复制代码
问题就是打???号的地方,带参数的方法视频里讲了,我也明白了,我这个show方法时不带参数的
getMethod方法的第二个参数我应该写什么呢?null?void.clas?
invoke方法也是一样,没有参数我肯定也不需要传参数,???号的地方我应该写什么呢?

如果我写null是这样的警告:
MethodDemo.java:8: 警告:最后一个参数使用了不准确的变量类型的 varargs 方法的非 v
arargs 调用;
对于 varargs 调用,应使用 java.lang.Class<?>
对于非 varargs 调用,应使用 java.lang.Class<?>[],这样也可以抑制此警告
                Method md = mt.getClass().getMethod("show",null);
                                                            ^
如果我写void.class是编译可以通过,运行的时候会说找不到show(void)方法,类似这个意思。






评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
帮帮忙呀!
回复 使用道具 举报
本帖最后由 梦女孩 于 2011-11-24 14:22 编辑

Method m = "".getClass().getMethod("toString");
System.out.println(m.invoke("abc"));

getMethod的第二个参数是...的 也就是说 可有可无的
回复 使用道具 举报
“abc”是干什么的?????
回复 使用道具 举报
强子 黑马帝 2011-11-24 14:42:19
报纸
自己运行了一边  ,又去网上找了找,把这个警告干掉了,应该这么写
  1. import java.lang.reflect.*;
  2. class MethodDemo{
  3.   public void show()
  4.   {
  5.     System.out.println("this is show() method");
  6.   }
  7. }
  8. class MethodTest
  9. {
  10.   public static void main(String[] args) throws Exception
  11.   {
  12.      MethodDemo md = new MethodDemo();
  13.      Method method = md.getClass().getMethod("show",new Class[]{});
  14.      method.invoke(md,new Object[0]);
  15.   }
  16. }
复制代码
varargs 英文释义:不定参数
null代表不确定的对象
回复 使用道具 举报
强子 发表于 2011-11-24 14:42
自己运行了一边  ,又去网上找了找,把这个警告干掉了,应该这么写varargs 英文释义:不定参数
null代表不 ...

谢谢强子,经过我的测试你得方法可以实现,通过 梦女孩 的我自己测试了一下,如果被反射的方法没有参数,getMethod 和 invoke 这两个方法 可以只写第一个参数,getMethod("show"),invoke(md)这样写也可以!~~~
回复 使用道具 举报
王振宇 黑马帝 2011-11-24 14:56:20
7#
还有 各位admin不是提问也加分呢吗?我是抱着学习的态度来问问题,但是加分也很重要呀@!~~~
回复 使用道具 举报
强子 黑马帝 2011-11-24 14:58:33
8#
如果问题以解决,结贴后加分。多关注论坛。
回复 使用道具 举报
王振宇 黑马帝 2011-11-24 15:08:30
9#
强子 发表于 2011-11-24 14:58
如果问题以解决,结贴后加分。多关注论坛。

不好意思!好久没上了!~~~再次感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马