前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反射类的构造函数

反射类的构造函数

原创
作者头像
MonroeCode
发布2018-01-11 12:21:30
1K0
发布2018-01-11 12:21:30
举报
文章被收录于专栏:Java技术分享Java技术分享

<!-- 首先,通过Class获取类的字节码 Class clazz = Class.forName("com.marer.reflect.Person"); 然后,利用Constructor创建对象 Constructor c = clazz.getConstructor(null);//获取无参的构造函数 Constructor c = clazz.getConstructor(String.class);//获取参数为String的构造函数 Constructor c = clazz.getConstructor(String.class, int.class);//获取参数为String,int的构造函数 Constructor c = clazz.getDeclaredConstructor(List.class);//获取隐藏为private的构造函数 c.setAccessible(true);//暴力反射 创建对象的另外一种途径,反射出类的无参构造函数并创建对象 Class clazz = Class.forName("com.marer.reflect.Person"); Person p = (Person) clazz.newInstance(); 但是当无参的构造函数为private或不存在的时候,反射抛异常 转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49822819 但是可以通过暴力反射获取类的隐藏构造函数: Constructor.setAccessible(true);

-->

代码语言:java
复制
//解剖类的构造函数,创建类的对象  
public class Demo2 {  
      
    //反射构造函数:public Person()  
    @Test  
    public void test1() throws Exception{  
          
        Class clazz = Class.forName("com.marer.reflect.Person");  
        Constructor c = clazz.getConstructor(null);  
          
        Person person = (Person)c.newInstance(null);  
          
        System.out.println(person.str);  
    }  
      
      
      
    //反射构造函数:public Person(String name)  
    @Test  
    public void test2() throws Exception{  
          
        Class clazz = Class.forName("com.marer.reflect.Person");  
        Constructor c = clazz.getConstructor(String.class);  
          
        Person person = (Person)c.newInstance("测试成功");  
          
        System.out.println(person.str);  
    }  
      
      
      
    //反射构造函数:public Person(String name, int age)  
    @Test  
    public void test3() throws Exception{  
          
        Class clazz = Class.forName("com.marer.reflect.Person");  
        Constructor c = clazz.getConstructor(String.class, int.class);  
          
        Person person = (Person)c.newInstance("测试成功",123);  
          
        System.out.println(person.str);  
    }  
      
      
      
    //反射四有的构造函数:private Person(List list)  
    @Test  
    public void test4() throws Exception{  
        Class clazz = Class.forName("com.marer.reflect.Person");  
        Constructor c = clazz.getDeclaredConstructor(List.class);  
          
        c.setAccessible(true);//暴力反射  
          
        Person p = (Person) c.newInstance(new ArrayList());  
          
        System.out.println(p.str);  
    }  
      
      
      
    //创建对象的另外一种途径,反射出类的无参构造函数并创建对象  
    //但是当无参的构造函数为private或不存在的时候,反射抛异常  
    @Test  
    public void test5() throws Exception{  
        Class clazz = Class.forName("com.marer.reflect.Person");  
        Person p = (Person) clazz.newInstance();  
        System.out.println(p);  
        System.out.println(p.str);  
    }  
}  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档