02_3中方式的反射,通过Class.forName获得Class对象,通过类.class获得字节码对象,通过类实例.getClass()的方式获得Class对象



反射中加载类:

Java中有一个Class类用于代表某一个类的字节码

 

.class文件   
对应Class

 

//1
加载类

// java中Class代表一个类,但是到底代表哪个类要明确指出

//
其中clazz代表这个类的字节码文件

Class
clazz1= Class.forName("day3.reflect.Person");

//2

Class
clazz2 = Person.class;//从内存中得到Person对象的字节码

//3

Class
clazz3 = new Person().getClass();//通过类获得它的字节码文件

 

 

下面一段参数可以强制访问私有的构造方法。

Class clazz = Class.forName("day3.reflect.Person");

Constructor c =
clazz.getDeclaredConstructor(xx.class);

c.setAccessible(true);//强制访问私有的构造方法。

Person p = (Person)c.newInstance("dsa");

时间: 2024-09-13 11:57:14

02_3中方式的反射,通过Class.forName获得Class对象,通过类.class获得字节码对象,通过类实例.getClass()的方式获得Class对象的相关文章

java中如何用反射创建一个对象

问题描述 java中如何用反射创建一个对象 java中如何用反射创建一个对象 如何理解java的反射,反射是一种怎么样的机制呢 解决方案 楼上说的理论很多了,,给你来点实际的,, Class clazz=Class.forName("test.User"); Object obj=clazz.newInstance(); 这是用反射创建对象的方法之一,,也是最常用的 解决方案二: 反射主要做两件事情,一个是运行时创建(dc)(最典型的,插件程序,插件在主程序后被开发出来,主程序要创建插

大数据虚拟化实例:Tarball方式部署Hadoop发行版

在博文<灵活管理Hadoop各发行版的运维利器>中,我们介绍了vSphere Big Data Extensions(BDE)是解决企业部署和管理Hadoop发行版的利器,通过它可以很方便可靠地运维Hadoop多个主流的商业发行版(包括社区的Apache Hadoop).本文的内容围绕上述主题,以具体实例深入讲解如何做到灵活部署和管理Hadoop发行版的. 实例:Tarball方式部署GPHD1.2发行版 首先,需要下载GPHD 1.2发行版到本地.这里是Tarball的下载地址,完成后解压缩

ASP.NET中实现根据匿名类、datatable、sql生成实体类

  这篇文章主要介绍了ASP.NET中实现根据匿名类.datatable.sql生成实体类,这个小小工具类非常实用,使用起来也很方便,需要的朋友可以参考下 在开发中可能会遇到这几种情况: 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要先建一个类 ,头痛 4.如果通过代码生成器要写模版,需要安装或者不想生成一堆不用的类 为了解决上面的不便之处,我封装了一个实体生成类,可以扔到

深入Python解释器理解Python中的字节码_python

我最近在参与Python字节码相关的工作,想与大家分享一些这方面的经验.更准确的说,我正在参与2.6到2.7版本的CPython解释器字节码的工作. Python是一门动态语言,在命令行工具下运行时,本质上执行了下面的步骤:     当第一次执行到一段代码时,这段代码会被编译(如,作为一个模块加载,或者直接执行).根据操作系统的不同,这一步生成后缀名是pyc或者pyo的二进制文件.     解释器读取二进制文件,并依次执行指令(opcodes). Python解释器是基于栈的.要理解数据流向,我

java中的字节码

这段时间一直在看java,看到讲 Reflection,ClassLoader,javassist 的地方,很兴奋,因为以前用.net的时候接触过一点点Reflection,但我再看到ClassLoader的时候,简直觉得非常神奇,可是神奇的东西一般都很难懂,看了很多资料,都不太明白,直到在ibm的网站上看到<java编程的动态性>,很详细的阐述了ClassLoader的作用,接着我看了使用javassist修改字节码的地方,跃跃欲试,动手做了一个小小的例子,朋友说我误入歧途,刚刚接触java

class字节码中常量池不连续

问题描述 class字节码中常量池不连续 求助一下,这几天在看jvm的class结构定义,用javap -v 反编译一个项目中的类,发现常量池编号不连续, 少了编号为126 和 138 的常量,这是为什么 解决方案 Class文件内容和常量池Class文件内容及常量池Class文件内容及常量池

c#-C#中GetComponent&amp;amp;lt;T&amp;amp;gt;(),如果T是一个类的话,返回的是类的地址吗,还是一个类

问题描述 C#中GetComponent<T>(),如果T是一个类的话,返回的是类的地址吗,还是一个类 返回的类会影响T本事内容吗?? 官网查的: Object GetComponent ( PropertyDescriptor propertyDescriptor ) B类中的a.i会改变A中的类的i的值,可是这个 GetComponent 不是一个地址形式,为什么会改变呢?? using UnityEngine; using System.Collections; public class

forname()-关于同一个包下,一个程序可以找到类,另一个却可以找到类

问题描述 关于同一个包下,一个程序可以找到类,另一个却可以找到类 如图,forName()找不到Employee类,以为环境变量怎么了,再次在同一包下新建了Tempest来检测,可以TempTest却可以找到,求大神解惑 解决方案 C币可以干嘛? 原帖2L 解决方案二: 找不到类!查看你的类是否确定有

java-在eclipse中导入压缩包时,为什么Build Path后解压缩的文件里没有原来压缩包里的类

问题描述 在eclipse中导入压缩包时,为什么Build Path后解压缩的文件里没有原来压缩包里的类 加载驱动程序时,需要com.mysql.jdbc.Driver类,mysql-connector-java.zip下是有这个类的,但是Build Path后,Reference Library里却没有任何类,怎么办 解决方案 zip压缩包跟jar包还是有区别的,建议你直接导入mysql-connector-java.jar. 解决方案二: zip包识别不出来的吧,都是引用jar包的. 解决方