黑马程序员技术交流社区

标题: 大神看看我的这个为啥会抛异常啊 [打印本页]

作者: 玥夜    时间: 2014-8-26 22:17
标题: 大神看看我的这个为啥会抛异常啊
本帖最后由 玥夜 于 2014-8-27 07:31 编辑
  1. import java.lang.reflect.Constructor;
  2. /**
  3. * 编写一个类,增加一个实例方法用于打印一条字符串。
  4. *   并使用反射手段创建该类的对象, 并调用该对象中的方法。
  5. * */
  6. public class Test5 {

  7.         public static void main(String[] args) throws Exception
  8.         {
  9. //                Constructor con= PrintStr.class.getConstructor();
  10. //
  11. //                System.out.println("aa");
  12. //                PrintStr ps= (PrintStr)con.newInstance();
  13. //                ps.print("字符串");
  14.                 //上面的方法会抛异常 不知道为什么呢
  15.                 Constructor con1= String.class.getConstructor();

  16.                 System.out.println("aaa");
  17.                 String ps1= (String)con1.newInstance();
  18.                 System.out.println(ps1.length());
  19.         }
  20. }
  21. class PrintStr
  22. {
  23.         PrintStr(){};
  24.         public void print(String str)
  25.         {
  26.                 System.out.print(str);
  27.         }
  28. }
复制代码


作者: careit    时间: 2014-8-26 23:42
通过查阅资料学习和查阅Java api 发现 其实你的 PrintStr 的构造方法缺少  修饰符public

2014-08-26_233739.png (142.6 KB, 下载次数: 20)

2014-08-26_233739.png

作者: masai158    时间: 2014-8-27 02:14
:lol!!我简单分析一下。你下面私有化了构造函数,所以你那个 获取 构造方法是获取不到的。需要暴力反射一下。。
我没有测试哈
作者: 格子、    时间: 2014-8-27 07:06
Constructor con= PrintStr.class.getConstructor();改为 Constructor con= PrintStr.class.getConstructor(null);即可
作者: 玥夜    时间: 2014-8-27 07:27
masai158 发表于 2014-8-27 02:14
!!我简单分析一下。你下面私有化了构造函数,所以你那个 获取 构造方法是获取不到的。需要暴力反射一下 ...

你晚上都不睡觉麽  。。。:Q
作者: 玥夜    时间: 2014-8-27 07:31
格子、 发表于 2014-8-27 07:06
Constructor con= PrintStr.class.getConstructor();改为 Constructor con= PrintStr.class.getConstructo ...

呀  这个不行  昨天好像测试了 弄了大半天才找到 视频果断没看仔细啊    :Q是因为获取的构造函数没有写public  这个方法只能获取到被public修饰的    还有一个获取默认修饰和私有修饰那个方法
作者: 格子、    时间: 2014-8-27 07:39
玥夜 发表于 2014-8-27 07:31
呀  这个不行  昨天好像测试了 弄了大半天才找到 视频果断没看仔细啊    是因为获取的构造函数没有写pu ...

这样的话,为什么要把空参的构造函数给弄成显示的呢?默认的就不会有这么多问题了,至于权限修饰符,有的很多方法都有要求但没有具体说明。。。我被坑过好多次
作者: 玥夜    时间: 2014-8-27 07:43
格子、 发表于 2014-8-27 07:39
这样的话,为什么要把空参的构造函数给弄成显示的呢?默认的就不会有这么多问题了,至于权限修饰符,有的 ...

默认权限要用这个getDeclaredAnnotations() 视频上也没说这事儿 害死人了 试了各种方法 找度娘问了半天
作者: careit    时间: 2014-8-27 07:45
昨晚的努力被认可了,这是第一次在黑马论坛回答问题,多谢格子 版主。加油 加油
作者: 格子、    时间: 2014-8-27 07:46
careit 发表于 2014-8-27 07:45
昨晚的努力被认可了,这是第一次在黑马论坛回答问题,多谢格子 版主。加油 加油 ...

只要用心,我都会看的到,加油哦:lol
作者: Kikyou    时间: 2014-8-27 07:46
用暴力反射来破解
作者: 格子、    时间: 2014-8-27 07:46
玥夜 发表于 2014-8-27 07:43
默认权限要用这个getDeclaredAnnotations() 视频上也没说这事儿 害死人了 试了各种方法 找度娘问了半天 ...

视频不是万能滴,没有视频是玩玩不能滴,遇到解决问题就好,经验就是这么来的,保持一个好的心态,才能走的更远




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