A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 玥夜 中级黑马   /  2014-8-26 22:17  /  1979 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 玥夜 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

14 个回复

倒序浏览
通过查阅资料学习和查阅Java api 发现 其实你的 PrintStr 的构造方法缺少  修饰符public

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

2014-08-26_233739.png

点评

谢谢 知道了  发表于 2014-8-27 07:26

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

回复 使用道具 举报
:lol!!我简单分析一下。你下面私有化了构造函数,所以你那个 获取 构造方法是获取不到的。需要暴力反射一下。。
我没有测试哈
回复 使用道具 举报
Constructor con= PrintStr.class.getConstructor();改为 Constructor con= PrintStr.class.getConstructor(null);即可
回复 使用道具 举报
masai158 发表于 2014-8-27 02:14
!!我简单分析一下。你下面私有化了构造函数,所以你那个 获取 构造方法是获取不到的。需要暴力反射一下 ...

你晚上都不睡觉麽  。。。:Q
回复 使用道具 举报
格子、 发表于 2014-8-27 07:06
Constructor con= PrintStr.class.getConstructor();改为 Constructor con= PrintStr.class.getConstructo ...

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

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

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

只要用心,我都会看的到,加油哦:lol
回复 使用道具 举报
用暴力反射来破解

点评

恩 知道了 谢谢  发表于 2014-8-27 08:04
回复 使用道具 举报
玥夜 发表于 2014-8-27 07:43
默认权限要用这个getDeclaredAnnotations() 视频上也没说这事儿 害死人了 试了各种方法 找度娘问了半天 ...

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

点评

是极是极  发表于 2014-8-27 08:03
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马