package com.test; public class Car { private String brand; private String color; private int maxSpeed; public Car(){} public Car(String brand, String color, int maxSpeed) { super(); this.brand = brand; this.color = color; this.maxSpeed = maxSpeed; }…
java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 非静态初始化块 非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值. 构造方法 在每次初始化实例对象时调用. 重点:执行顺序-> 在加载类时执行一次静态初始化块(之后不再调用). 在每次初始化实例对象时:先执行非静态初始化块,再执行构…
反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强了应用程序的可扩展性. 反射技术的原理如下图所示: 但是要想要对字节码文件进行解剖,必须要有字节码文件对象. 如何获取字节码文件对象呢? 要读取的类文件源码: package Reflect; public class Person { /** * @param args */ private St…
1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来自定义自己的InvocationHandler; >通过Proxy.getProxyClass获得动态代理类 >通过反射机制获得代理类的构造方法,方法签名为getConstructor(InvocationHandler.class) >通过构造函数获得代理对象并将自定义的Invocatio…
一.反射与操作类 在反射机制的处理过程之中不仅仅只是一个实例化对象的处理操作,更多的情况下还有类的组成的操作,任何一个类的基本组成结构:父类(父接口),包,属性,方法(构造方法,普通方法)--获取类的基本信息 一个类的基本信息主要包括的是所在的包名称,父类的定义,父接口的定义.--范例:定义一个程序类 package 反射.反射与操作类; /** * @author : S K Y * @version :0.0.1 */ public interface IMessageStrvice { /…
案例:根据配置文件,实例化对象 src下创建一个"配置文件"config.txt,内容如下: className=ahjava.p07reflect.Cat package ahjava.p07reflect; import java.io.FileReader; import java.lang.reflect.Constructor; import java.util.Properties; class Cat { public Cat() { System.out.println…
package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @ClassName: TestClass * @Description: 通过反射获取指定类的所有信息 * @author ljy * @date 2019年9月12日 上午11:29:02 * */ public class TestCla…
当我们知道一个类的对象,或者知道一个类的路径,或者指导这个类的名称的时候我们可以获取到这个类的类对象 当我们仅仅知道一个类的类对象的时候我们依然无法操作这个类,因为我们不知道这个类的属性,类的方法.那么我们如何从类对象中获取到他所拥有的属性和方法呢? 我们利用Class类的几个属性和方法: 摘自java API: 在上一篇的基础上创建一个新的类RefTest: RefTest.java文件package com.cx.main; import java.lang.reflect.Field; i…
//------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void setProperty (Object obj, String propertyName, Object value) // Object obj:所要使用的字节码class对象,String propertyName:所要获取对象的propertyName成员变量,Object value :给对象…
XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="obj">序列对象</param> /// <param name="filePath">XML文件路径</param> /// <returns>是否成功</returns> public static bool S…