我在学习java的反射时候,遇到一个方法:getDeclaredMethod(String name,Class...parameterType);举例:
          Method m=c.getDeclaredMethod("Study",____),          询问空格里面该选择哪一项?
A.String, int.
B."zhangsan,20
C.String.class,int class
D."String calss "   "int class".答案选:C. 
对这一项不是很懂,请教为什么?  对于C那个类型的写法不是很懂。 

解决方案 »

  1.   

    getDeclaredMethod(String name,Class...parameterType)第一个参数是函数名  字符串类型  第二个是一个可变参数  ,传入的是那个函数(如你所讲的“study”函数)的字节码   参数是String类型的话就得传入String.class  int类型的就的是int.class
      

  2.   

    getDeclaredMethod(String name,Class...parameterType)第一个参数是函数名 字符串类型 第二个是一个可变参数 ,传入的是那个函数(如你所讲的“study”函数)参数(上面的没写全)的字节码 参数是String类型的话就得传入String.class int类型的就的是int.class
      

  3.   

    int.class ?有int有这个属性吗?
    我记得只有int.TYPE。
      

  4.   

    错了吧,int是基本类型,它还有.class属性...? 是int.TYPE.
      

  5.   

    getDeclaredMethod(String name,Class...parameterType);
    这个方法是接受一个String类型参数,一个或者任意多个class类型的参数
    所以选择C  int.class是正确的等价于Integer.TYPE;Integer.class;其实用第三种会更加容易理解
      

  6.   

    没有实践过就没有发言权   在eclipse中试试有没有int.class就知道结果了  自己不知道的事情就不能说不存在
      

  7.   


    public class Test {

    public void test(int x){
    System.out.println(x);
    }

    public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException { //error: Exception in thread "main" java.lang.NoSuchMethodException: com.webex.learning.Test.test(java.lang.Integer)
    /* Class<?> forName = Class.forName("com.webex.learning.Test");
    Method method = forName.getDeclaredMethod("test", Integer.class);
    method.invoke(forName.newInstance(), 10);*/


    Class<?> forName = Class.forName("com.webex.learning.Test");
    Method method = forName.getDeclaredMethod("test", int.class);
    method.invoke(forName.newInstance(), 10); 

    }}测试了下:
    说明(1)int.Class和integer.class不是一回事情
      

  8.   

    getDeclaredMethod(String name,Class...parameterType);String name是方法名
    Class...parameterType  这个是参数类型列表比如一个方法   public void setUserName(String userName);
    setUserName方法名对应就对应String name
    String name这个参数对应Class...parameterType因为要求的是Class类型的参数所以用String.class
    楼主敲敲代码就知道了另外int等基本类型是有class属性的,不知道的别瞎说