反射中的Assembly(装载程序集):可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息.  String assemblyName = @"NamespaceRef";//命名空间     String strongClassName = @"NamespaceRef.China";//需要动态生成的类交China Assembly.Load(assemblyName).CreateInstance(strongClassName); 反射用…
C#反射中的MakeGenericType函数可以用来指定泛型方法和泛型类的具体类型,方法如下面代码所示这里就不多讲了,详情看下面代码一切就清楚了: using System; using System.Reflection; namespace RFTest { //类ReflectionTest中定义了一个泛型函数DisplayType和泛型类MyGenericClass class ReflectionTest { //泛型类MyGenericClass有个静态函数DisplayNeste…
#define offsetof(struct_t,member) ((int)&((struct_t *)0)->member) 这个东西很多人应该知道: offsetof是用来判断结构体中成员的偏移位置.他是一个宏定义. (struct_t *)0是一个指向struct_t类型的指针,其指针值为 0,所以其作用就是把从地址 0 开始的存储空间映射为一个 struct_t 类型的对象.((struct_t *)0)->member 是访问类型中的成员 member,相应地 &…
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)宏的运行机理:1. ( (TYPE *)0 ) 将零转型为TYPE类型指针; 2. ((TYPE *)0)->MEMBER 访问结构中的数据成员; 3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型.巧妙之处在于将0转 换成(TY…
package com.zsw.test; import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetException; /** * <p>Title: java反射中Method类invoke方法的使用方法</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2009</p>…
JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段. getDeclaredFields():获得某个类的所有声明的字段,即包括public.private和proteced,但是不包括父类的申明字段. 同样类似的还有getConstruct…
搞清楚两者之间区别前,我们来了解下类加载过程. 一.类加载过程 1.加载 通过一个类的全限定名来获取定义此类的二进制字节流. 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构. 在内存中生成一个代表这个类的Java.lang.class对象,作为方法区这个类的各种数据的访问入口. 2.验证 文件格式验证 元数据验证 字节码验证 符号引用验证 3.准备 准备阶段是正式为类变量(仅被static修饰的变量)分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配.注意…
前言 最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别.当时没有想出来后来自己研究了一下就写下来记录一下. 解释 在java中Class.forName()和ClassLoader都可以对类进行加载.ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中.Class.forName()方法实际上也是调用的CLass…
#include <iostream> #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) using namespace std; int main(){ struct Demo{ char sex; int id; }; cout << "IOFFSETOF(Demo, sex): " << IOFFSETOF(Demo, sex) << end…
最近的在写代码的时候,需要用到反射来获取类中的所有公开属性值,于是写下如下代码: StringBuilder sb = new StringBuilder(); foreach (var f in this.GetType().GetFields()) { sb.AppendLine(string.Format( "{0}={1};", f.Name, f.GetValue(this))); } return sb.ToString(); 工作正常,后又在另一处对另外一个类需要获取属性…