zoukankan      html  css  js  c++  java
  • java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束

    /*
     * 反射获取私有的构造方法运行
     * 不推荐,破坏了程序的安全性,封装性
     * 暴力私有
     */
    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循环不能遍历,
        }
    }
  • 相关阅读:
    操作系统(一) 操作系统的概念
    数据结构(六) 排序
    数据结构(五) 查找和哈希表
    数据结构(三) 树和二叉树,以及Huffman树
    数据库简述(以MySQL为例)
    Java中的UDP应用
    Java线程池应用
    Java定时器应用
    JavaSE项目之聊天室swing版
    用LinkedList集合演示栈和队列的操作
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9146178.html
Copyright © 2011-2022 走看看