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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李菁 中级黑马   /  2012-9-13 00:55  /  1403 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;


public class Test {
        public static void main(String[] args)throws Exception {
                try {  
                        //得到类中的默认无参构造方法,怎么会出错呢?
                        Person p=Person.class.getDeclaredConstructor().newInstance();
                        p.printName();
                }catch (Exception e){
                        e.printStackTrace();
                }
        }
        class Person {
                public void printName(){
                        System.out.println("lijing");
                }
        }
}

3 个回复

倒序浏览
本帖最后由 武庆东 于 2012-9-13 01:56 编辑

可改为
public class Test {
    public static void main(String[] args)throws Exception {
            try {  
                   //得到类中的默认无参构造方法,怎么会出错呢?原题中Person是内部类,不能直接创建对象
                    Person p=Person.class.getDeclaredConstructor().newInstance();
                    Method me=Person.class.getMethod("printName");
                     me.invoke(p);
            }catch (Exception e){
                    e.printStackTrace();
            }
    }
}
class Person {
    public void printName(){
            System.out.println("lijing");
    }
}
getConstructor
public Constructor<T> getConstructor(Class<?>... parameterTypes)
                              throws NoSuchMethodException,
                                     SecurityException返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法
getDeclaredConstructor
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
                                      throws NoSuchMethodException,
                                             SecurityException返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法
回复 使用道具 举报
本帖最后由 黑马-王言龙 于 2012-9-13 07:28 编辑

class Demo {
        public static void main(String[] args) {
                try {  
            //得到类中的默认无参构造方法,怎么会出错呢?
            /*答:静态无法访问非静态,给Person加static即可
            不加静态它会提示找不到Person类*/
           
        Person p = Person.class.getDeclaredConstructor().newInstance();
           
           p.printName();
            }catch (Exception e){
                    e.printStackTrace();
            }
        }
        static class Person {
            public void printName(){
                    System.out.println("lijing");
            }
        }
}
回复 使用道具 举报
明白了,问题已经解决了,谢谢大家!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马