黑马程序员技术交流社区

标题: 反射方法大小写问题 [打印本页]

作者: 于潇    时间: 2012-5-20 09:36
标题: 反射方法大小写问题
本帖最后由 于潇 于 2012-5-20 09:39 编辑
  1. import java.lang.reflect.Constructor;
  2. import java.lang.reflect.Field;
  3. import java.lang.reflect.Method;
  4. class ReflectTest {
  5. /**
  6.   * @param args
  7.   */
  8. public static void main(String[] args)throws Exception {
  9.   // TODO Auto-generated method stub
  10.   String str1 = "abc";

  11.   Method methodCharAt = String.class.getMethod("charAt", int.class);//注意后面那个"charAt"
  12.   System.out.println(methodCharAt.invoke(str1, 1));
  13. }
  14. }
  15.   
复制代码
如果将“charAt”中的“c”改成大写即"CharAt",运行会报异常Exception in thread "main" java.lang.NoSuchMethodException: java.lang.String.CharAt(int)
这是为什么呢?

作者: 李哲    时间: 2012-5-20 09:42
方法是charAt(),所以本来就没有CharAt方法。当然会报告NoSuchMethodException。
No   Such   Method   Exception
没有  这样      方法   异常
作者: 李保成    时间: 2012-5-20 09:47
额 只能这么说 java中严格区分大小写 不是你想写啥就写啥滴 楼上正解 顶了
作者: --☆伟☆--    时间: 2012-5-20 10:26
亲,Java的编译机制是很成熟的,也是很严谨的,只有文档里面的显示的方法才能被编译并执行,包括已经过时的方法
作者: 于潇    时间: 2012-5-20 10:28
--☆伟☆-- 发表于 2012-5-20 10:26
亲,Java的编译机制是很成熟的,也是很严谨的,只有文档里面的显示的方法才能被编译并执行,包括已经过时的 ...

可是编译是通过的呀
作者: --☆伟☆--    时间: 2012-5-20 10:36
于潇 发表于 2012-5-20 10:28
可是编译是通过的呀

:#,错了,编译的时候只把它当成字符串进行处理了,但我觉得写程序时还是严谨点好
作者: 秦晓阳    时间: 2012-5-20 10:45
编译检查的是语法错误,你的那个方法时自定义方法,只有在执行时才会出现找不到方法的错误提示,所以编译才会没问题。
作者: 余宏    时间: 2012-5-20 11:24
java.lang.String.charAt(int index);
获得指定位置index的字符。
charAt本身就是String类中的一个方法,本就是小写,Java语言是区分大小写的,要是你改了自然就找不到这个方法了
当然会报NoSuchMethodException错误




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2