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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭宁 中级黑马   /  2012-6-2 00:01  /  2130 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Person {
  2.        
  3.         private String name;
  4.        
  5.         private String age;
  6.        
  7.        
  8.         public static void main(String[] args) throws Exception{
  9.                 Constructor constructor = Person.class.getConstructor(String.class);
  10.                 /*
  11.                  * 错误信息:
  12.                  *  Exception in thread "main" java.lang.NoSuchMethodException: Person.<init>(java.lang.String)
  13.                         at java.lang.Class.getConstructor0(Class.java:2706)
  14.                         at java.lang.Class.getConstructor(Class.java:1657)
  15.                         at Person.main(Person.java:14)

  16.                  * */
  17.        
  18.                 Person p1 = (Person)constructor.newInstance("郭宁");
  19.         }
  20.        
  21.        
  22.         Person(){
  23.                 this.name="哈哈";
  24.         }
  25.        
  26.         Person(String name){
  27.                 this.name = name;
  28.         }
  29.        
  30.         Person(String name,String age){
  31.                 this.name = name;
  32.                 this.age = age;
  33.         }
  34.        
  35.        
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 淡定

查看全部评分

12 个回复

倒序浏览
不知道你哪里有问题,编译的时候有语法错误,我给你改正发一下你看看吧
  1. import java.lang.reflect.*;
  2. class Person {
  3.         
  4.         private String name;
  5.         
  6.         private String age;
  7.         
  8.         
  9.         public static void main(String[] args) throws Exception{
  10.                 Constructor constructor = Person.class.getConstructor(String.class);
  11.                 /*
  12.                  * 错误信息:
  13.                  *  Exception in thread "main" java.lang.NoSuchMethodException: Person.<init>(java.lang.String)
  14.                         at java.lang.Class.getConstructor0(Class.java:2706)
  15.                         at java.lang.Class.getConstructor(Class.java:1657)
  16.                         at Person.main(Person.java:14)

  17.                  * */
  18.         
  19.                 Person p1 = (Person)constructor.newInstance("郭宁");
  20.         }
  21.         
  22.         
  23.         Person(){
  24.                 this.name="哈哈";
  25.         }
  26.         
  27.         Person(String name){
  28.                 this.name = name;
  29.         }
  30.         
  31.         Person(String name,String age){
  32.                 this.name = name;
  33.                 this.age = age;
  34.         }
  35.         
  36.         
  37. }
复制代码
回复 使用道具 举报
不知道你哪里有问题,编译的时候有语法错误,我给你改正发一下你看看吧
  1. import java.lang.reflect.*;
  2. class Person {
  3.         
  4.         private String name;
  5.         
  6.         private String age;
  7.         
  8.         
  9.         public static void main(String[] args) throws Exception{
  10.                 Constructor constructor = Person.class.getConstructor(String.class);
  11.                 /*
  12.                  * 错误信息:
  13.                  *  Exception in thread "main" java.lang.NoSuchMethodException: Person.<init>(java.lang.String)
  14.                         at java.lang.Class.getConstructor0(Class.java:2706)
  15.                         at java.lang.Class.getConstructor(Class.java:1657)
  16.                         at Person.main(Person.java:14)

  17.                  * */
  18.         
  19.                 Person p1 = (Person)constructor.newInstance("郭宁");
  20.         }
  21.         
  22.         
  23.         Person(){
  24.                 this.name="哈哈";
  25.         }
  26.         
  27.         Person(String name){
  28.                 this.name = name;
  29.         }
  30.         
  31.         Person(String name,String age){
  32.                 this.name = name;
  33.                 this.age = age;
  34.         }
  35.         
  36.         
  37. }
复制代码
回复 使用道具 举报
丰亚彬 发表于 2012-6-2 00:08
不知道你哪里有问题,编译的时候有语法错误,我给你改正发一下你看看吧

就是不知道为什么 编译不通过呀
回复 使用道具 举报
郭宁 发表于 2012-6-2 00:19
就是不知道为什么 编译不通过呀

我把代码发给你了,我给你改了
回复 使用道具 举报
丰亚彬 发表于 2012-6-2 00:31
我把代码发给你了,我给你改了

还是编译不通过
但我把Constructor constructor = Person.class.getConstructor(String.class);
改成Constructor constructor = Person.class.getDeclaredConstructor(String.class);
就通过了,不知道这两个有什么区别
回复 使用道具 举报
本帖最后由 郭宁 于 2012-6-2 00:42 编辑
丰亚彬 发表于 2012-6-2 00:31
我把代码发给你了,我给你改了

刚查API
getConstructor(Class<?>... parameterTypes)
          返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
getDeclaredConstructor(Class<?>... parameterTypes)
          返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法
权限问题啊~  把构造函数公有就OK了
构造函数在这里默认的不是public么?
回复 使用道具 举报
楼主这问题好典型啊!   顶下,      java中有四种权限,public,protected,default(不写),private;   如果不写则是默认的default;        
回复 使用道具 举报
杜俊彪 发表于 2012-6-2 00:46
楼主这问题好典型啊!   顶下,      java中有四种权限,public,protected,default(不写),private;   如果 ...

求default详解
回复 使用道具 举报
郭宁 发表于 2012-6-2 01:01
求default详解

1. default 一说叫friendly

   1)如果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是default。同一个package内的其它所有classes都可以访问friendly成员,但对package以外的classes则形同private。

   2)对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package,但隶属于相同的default package。
  1. class StudentInfo {
  2.     //一下方法缺省为default
  3.     void printInfo() {
  4.         System.out.println("Info...");
  5.     }
  6. }
  7. public class StudentManagementSys {
  8.     public static void main(String[] args) {
  9.         StudentInfo studentInfo = new StudentInfo();
  10.         studentInfo.printInfo();
  11.     }
  12. }
复制代码
回复 使用道具 举报
现实代码中,default  在构造函数与方法,   以及switch  里也有defautl:    ;break; 出现的多;   
回复 使用道具 举报
郭宁 发表于 2012-6-2 00:36
还是编译不通过
但我把Constructor constructor = Person.class.getConstructor(String.class);
改成Cons ...

在我这里是可以通过的,不通过我也不发给你了对吧,哈哈
回复 使用道具 举报
郭宁 发表于 2012-6-2 00:36
还是编译不通过
但我把Constructor constructor = Person.class.getConstructor(String.class);
改成Cons ...

我刚才看了一下,我把构造函数改了,忘了给你发了。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马