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循环不能遍历,
    }
}

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

时间: 2024-10-10 20:11:59

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

Android(java)学习笔记108:通过反射获取私有构造方法并且使用

1 package cn.itcast_02; 2 3 import java.lang.reflect.Constructor; 4 5 /* 6 * 需求:通过反射获取私有构造方法并使用 7 * private Person(String name){} 8 * 9 * Person p = new Person("风清扬"); 10 * System.out.println(p); 11 */ 12 public class ReflectDemo3 { 13 public st

c# 通过反射获取私有方法

class Program { static void Main(string[] args) { //通过反射来调私有的成员 Type type = typeof(Person); //BindingFlags类型枚举,BindingFlags.NonPublic | BindingFlags.Instance 组合才能获取到private私有方法 MethodInfo methodInfo = type.GetMethod("SayHello", BindingFlags.NonP

java 27 - 3 反射之 通过反射获取构造方法并使用

类 Constructor<T>:提供关于类的单个构造方法的信息以及对它的访问权限. 通过反射的方法获取构造方法并使用  ps:先忽略泛型 A.1:获取构造方法的数组: public Constructor<?>[] getConstructors():获得所有公共构造方法 public Constructor<?>[] getDeclaredConstructors():获得所有构造方法 A.2:获取单个构造方法(用于非私有的构造方法) public Construc

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式、反射操作构造方法、成员方法、成员属性、JavaBean的概述&amp;BeanUtils的使用、自定义BeanUtils工具类

今日内容介绍 u 反射机制的概述和字节码对象的获取方式 u 反射操作构造方法.成员方法.成员属性 u JavaBean的概述&BeanUtils的使用 u 自定义BeanUtils工具类 第1章 反射机制概述.字节码对象的获取方式.反射操作构造方法.成员方法.成员属性 1.1 反射机制的概述和字节码对象的获取方式 1.1.1 反射介绍 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法        这种动态获取的以及动

原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)

大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以遵循本文采用的各种方案. 本文内容 反射各方法的性能数据 反射的高性能开发建议 创建类型的实例 反射获取 Attribute 反射调用公共 / 私有方法 使用预编译框架 附本文性能测试所用的代码 所有反射相关方法 IsDefined 和 GetCustomAttribute 的专项比较 参考资料 反

c#反射机制学习和利用反射获取类型信息

反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的名称.限定符和参数等.有了反射,即可对每一个类型了如指掌.如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道 1..NET可执行应用程序结构 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构. 应用程序结构分为应用程序域—程序集—模块—类型—成员几

Java 反射调用私有域和方法(setAccessible)

Java 反射调用私有域和方法(setAccessible) @author ixenos AccessibleObject类 Method.Field和Constructor类共同继承了AccessibleObject类,该基类有两个setAccessible方法能在运行时压制Java语言访问控制检查(Java language access control checks),从而能任意调用被私有化保护的方法.域和构造方法 public class AccessibleObjectextends

00111_通过反射获取构造方法并使用

1.在反射机制中,把类中的成员(构造方法.成员方法.成员变量)都封装成了对应的类进行表示.其中,构造方法使用类Constructor表示.可通过Class类中提供的方法获取构造方法: (1)返回一个构造方法 public Constructor<T> getConstructor(Class<?>... parameterTypes) 获取public修饰, 指定参数类型所对应的构造方法 public Constructor<T> getDeclaredConstruc

java通过反射获取调用变量以及方法

一:反射概念 可以通过Class类获取某个类的成员变量以及方法,并且调用之. 二:通过反射获取方法.变量.构造方法 1 @Test 2 // 通过反射获取类定义的方法 3 public void testMethod() throws Exception { 4 @SuppressWarnings("rawtypes") 5 Class clazz = Class.forName("java.lang.String"); 6 Method[] m = clazz.g