求解:为什么选String.class;int.class ?

zaixiankaifa 2011-09-12 11:33:56
我在学习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那个类型的写法不是很懂。
...全文
206 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
游一游走一走 2011-09-12
  • 打赏
  • 举报
回复
getDeclaredMethod(String name,Class...parameterType);
这个方法是接受一个String类型参数,一个或者任意多个class类型的参数
所以选择C int.class是正确的等价于Integer.TYPE;Integer.class;其实用第三种会更加容易理解
  • 打赏
  • 举报
回复
错了吧,int是基本类型,它还有.class属性...? 是int.TYPE.
五哥 2011-09-12
  • 打赏
  • 举报
回复
int没有class
fainfy 2011-09-12
  • 打赏
  • 举报
回复
int.class ?有int有这个属性吗?
我记得只有int.TYPE。
半个灵魂 2011-09-12
  • 打赏
  • 举报
回复
getDeclaredMethod(String name,Class...parameterType)第一个参数是函数名 字符串类型 第二个是一个可变参数 ,传入的是那个函数(如你所讲的“study”函数)参数(上面的没写全)的字节码 参数是String类型的话就得传入String.class int类型的就的是int.class
半个灵魂 2011-09-12
  • 打赏
  • 举报
回复
getDeclaredMethod(String name,Class...parameterType)第一个参数是函数名 字符串类型 第二个是一个可变参数 ,传入的是那个函数(如你所讲的“study”函数)的字节码 参数是String类型的话就得传入String.class int类型的就的是int.class
小绵羊 2011-09-12
  • 打赏
  • 举报
回复
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属性的,不知道的别瞎说
jiafu1115 2011-09-12
  • 打赏
  • 举报
回复

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不是一回事情
半个灵魂 2011-09-12
  • 打赏
  • 举报
回复
没有实践过就没有发言权 在eclipse中试试有没有int.class就知道结果了 自己不知道的事情就不能说不存在

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧