日期:2014-05-20  浏览次数:20708 次

关于getDelaredMethod()方法的问题;答完结贴;谢谢了;
Java code

String str = "aa";
Class cla = Class.getClass();
Method mt = cla.getDeclaredMethod("put",??);
........

//另一个类;
public class aa
{
 public void put()
{
   ........
}
}


  想请问下,getDeclaredMethod("put",??);的第二个参数到底是什么啊?参数是 Class 对象的一个数组,它按声明顺序标识该方法的形参类型;api上是这样写的;怎么会是Class对象的数组呢?或者说改参数表示所调用方法的形参,当我的put()方法没有参数传入的时候能用Null来代替吗?
  二、我的另一个类中必须要有main()函数吗?
 

------解决方案--------------------
一、是一个Class类型的数组,就是说,我根据你的方法名和你的参数类型列表,我就可以知道你要的那个方法,
如果没有参数的话,是可以用null来替代的

二、如果你要是运行的话,当然要有一个类中有main函数了,如果不运行的话,自然就不需要了.

这行定错了吧
Java code

Class cla = Class.getClass();

------解决方案--------------------
就是你要得到的这个方法的参数类型的数组


比如一个方法定义如下 

put(String str,Date date) {

}
你的方法有两个参数,一个是String ,一个是Date 
就应该通过下面的语句得到这个Method对象
Method mt = cla.getDeclaredMethod("put",new Class[]{String.class,Date.class});


没有参数 就传一个null过去就可以了


只有你的启动类才需要main函数


------解决方案--------------------
探讨
Method中的invoke()方法

public Object invoke(Object obj,
Object... args)
obj - 从中调用底层方法的对象
args - 用于方法调用的参数
很迷糊……希望高手解释下……