码迷,mamicode.com
首页 > 编程语言 > 详细

java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束

时间:2018-06-06 22:14:25      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:OLE   package   构造方法   tcl   system   暴力   instance   imp   文件   

/*
 * 反射获取私有的构造方法运行
 * 不推荐,破坏了程序的安全性,封装性
 * 暴力私有
 */
public class ReflectDemo4 {
    public static void main(String[] args)throws Exception {
        Class c=Class.forName("demo01.Person");
        Constructor  con=c.getDeclaredConstructor(int.class,String.class);
        
        //Constructor类,父类AccessibleObject,定义方法setAccessibile(boolean flag)
        con.setAccessible(true);
        
        Object obj=con.newInstance(18,"lisi");
        System.out.println(obj);
    }
}
package demo02;

import java.lang.reflect.Method;
import java.util.ArrayList;

/*
 * 定义集合类,泛型String
 * 要求向集合中添加Integer类型
 * 
 * 反射方式,获取出集合ArrayList类的class文件对象
 * 通过class文件对象,调用add方法
 * 
 * 对反射调用方法是否理解
 */
public class ReflectTest {
    public static void main(String[] args)throws Exception {
        ArrayList<String> array=new ArrayList<>();
        array.add("a");
        
        //反射方式,获取出集合ArrayList类的class文件对象
        Class c=array.getClass();
        //获取ArrayList.class文件中的方法add
        Method method=c.getMethod("add", Object.class);
        System.out.println(method);
        //使用invoke运行ArrayList方法add
        method.invoke(array,150);
        method.invoke(array,1500);
        method.invoke(array,15000);
        System.out.println(array);
        //增强for循环不能遍历,
    }
}

 

java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束

标签:OLE   package   构造方法   tcl   system   暴力   instance   imp   文件   

原文地址:https://www.cnblogs.com/benjamin77/p/9146178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!