当前位置: 首页 > news >正文

网站建设及维护 东营wordpress页面和自定义链接

网站建设及维护 东营,wordpress页面和自定义链接,网站设计规范,工程业绩在建设厅网站都能查到类加载器#xff08;1#xff09;类的加载当我们的程序在运行后#xff0c;第一次使用某个类的时候#xff0c;会将此类的class文件读取到内存#xff0c;并将此类的所有信息存储到一个Class对象中。说明#xff1a;a.图中的Class对象是指#xff1a;java.lang.Class类的…类加载器1类的加载当我们的程序在运行后第一次使用某个类的时候会将此类的class文件读取到内存并将此类的所有信息存储到一个Class对象中。说明a.图中的Class对象是指java.lang.Class类的对象此类由Java类库提供专门用于存储类的信息。b.我们程序中可以通过类名.class或者对象.getClass()方法获取这个Class对象2类的加载时机a.创建类的实例。b.调用类的静态变量或者为静态变量赋值。c.调用类的静态方法。d.使用反射方式来强制创建某个类或接口对应的java.lang.Class对象。e.初始化某个类的子类。f.直接使用java.exe命令来运行某个主类。以上六种情况的任何一种都可以导致JVM将一个类加载到方法区。3类加载器类加载器是负责将磁盘上的某个class文件读取到内存并生成Class的对象。Java中有三种类加载器它们分别用于加载不同种类的classa.启动类加载器(Bootstrap ClassLoader)用于加载系统类库JAVA_HOME\bin目录下的class例如rt.jar。b.扩展类加载器(Extension ClassLoader)用于加载扩展类库JAVA_HOME\lib\ext目录下的class。c.应用程序类加载器(Application ClassLoader)用于加载我们自定义类的加载器。public class Test{ public static void main(String[] args) {System.out.println(Test.class.getClassLoader());//sun.misc.Launcher$AppClassLoaderSystem.out.println(String.class.getClassLoader());//null(API中说明一些实现 可能使用null来表示引导类加载器。 如果此类由引导类加载器加载则此方法将在此类实现中返回null。 )} }4双亲委派机制上图展示了类加载器的层次关系这种关系称为类加载器的双亲委派模型 a.双亲委派模型中除了顶层的启动类加载器外其余的类加载器都应当有自己的父级类加载器。b.这种关系不是通过继承实现的通常是通过组合实现的。通过组合来表示父级类加载器。c.双亲委派模型的工作过程 i. 某个类加载器收到类加载的请求它首先不会尝试自己去加载这个类而是把请求交给父级类加载器。 ii.因此所有的类加载的请求最终都会传送到顶层的启动类加载器中。 iii.如果父级类加载器无法加载这个类然后子级类加载器再去加载。5双亲委派机制的好处双亲委派机制的一个显而易见的好处是Java的类随着它的类加载器一起具备了一种带有优先级的层次关系。例如java.lang.Object。它存放在rt.jar中。无论哪一个类加载器要加载这个类最终都是委派给处于顶端的启动类加载器进行加载因此java.lang.Object类在程序的各种类加载器环境中都是同一个类。相反如果没有双亲委派机制如果用户自己编写了一个java.lang.Object那么当我们编写其它类时这种隐式的继承使用的将会是用户自己编写的java.lang.Object类那将变得一片混乱。反射的概述1反射的引入问题IDEA中的对象是怎么知道类有哪些属性哪些方法的呢答通过反射技术对象类进行了解剖得到了类的所有成员。2反射的概念反射是一种机制利用该机制可以在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量成员方 法构造方法)。3使用反射操作类成员的前提要获得该类字节码文件对象就是Class对象。4反射在实际开发中的应用a.开发IDEA(集成开发环境)比如IDEAEclipse b.各种框架的设计和学习 比如SpringMybaits....Class对象的获取方式1三种获取方式方式1: 通过类名.class获得 方式2通过对象名.getClass()方法获得 方式3通过Class类的静态方法获得 static Class forName(类全名) 每一个类的Class对象都只有一个。示例代码package com.test.code.reflex;public class Student { }public class Demo01 {public static void main(String[] args) throws ClassNotFoundException {// 获得Student类对应的Class对象ClassStudent c1 Student.class;// 创建学生对象Student stu new Student();Class? extends Student c2 stu.getClass();System.out.println(c1 c2);// 通过Class类的静态方法获得 static Class forName(类全名)Class? c3 Class.forName(com.test.code.reflex.Student);System.out.println(c1 c3);System.out.println(c2 c3);} }Demo01运行结果2Class类常用方法String getSimpleName(); 获得类名字符串类名 String getName(); 获得类全名包名类名 T newInstance() ; 创建Class对象关联类的对象示例代码public class Demo02 {public static void main(String[] args) throws IllegalAccessException, InstantiationException {// 获得Class对象ClassStudent c Student.class;// 获得类名字符串类名System.out.println(c.getSimpleName());// 获得类全名包名 类名System.out.println(c.getName());// 创建对象Student stu (Student)c.newInstance();System.out.println(stu);} }Demo02运行结果4.反射之操作构造方法1Constructor类概述反射之操作构造方法的目的获得Constructor对象来创建类的对象。Constructor类概述类中的每一个构造方法都是一个Constructor类的对象2Class类中与Constructor相关的方法1. Constructor getConstructor(Class... parameterTypes) * 根据参数类型获得对应的Constructor对象。 * 只能获得public修饰的构造方法 2. Constructor getDeclaredConstructor(Class... parameterTypes) * 根据参数类型获得对应的Constructor对象 * 可以是public、protected、(默认)、private修饰符的构造方法。 3. Constructor[] getConstructors() * 获得类中的所有构造方法对象只能获得public的 4. Constructor[] getDeclaredConstructors() * 获得类中的所有构造方法对象 * 可以是public、protected、(默认)、private修饰符的构造方法。3Constructor对象常用方法1. T newInstance(Object... initargs)—— 根据指定的参数创建对象 2. void setAccessible(true) 设置暴力反射——是否取消权限检查true取消权限检查false表示不取消示例代码public class Student {private String name;private String sex;private int age;//公有构造方法public Student(String name, String sex, int age) {this.name name;this.sex sex;this.age age;}//私有构造方法private Student(String name, String sex) {this.name name;this.sex sex;}}public class Demo03 {/*** Constructor[] getConstructors()* 获得类中的所有构造方法对象只能获得public的* Constructor[] getDeclaredConstructors()* 获得类中的所有构造方法包括private修饰的*/Testpublic void test03(){// 获得Class对象ClassStudent c Student.class;// 获得类中的所有构造方法对象只能是public修饰的Constructor?[] cons_one c.getConstructors();for (Constructor? con : cons_one) {System.out.println(con);}System.out.println(--------------------------------);// 获取类中所有的构造方法包括public、protected、(默认)、private的Constructor?[] cons_two c.getDeclaredConstructors();for (Constructor? con : cons_two) {System.out.println(con);}}/*** Constructor getDeclaredConstructor(Class... parameterTypes)* 根据参数类型获得对应的Constructor对象*/Testpublic void test02() throws Exception {// 获得Class对象ClassStudent c Student.class;// 获得两个参数构造方法对象ConstructorStudent con c.getDeclaredConstructor(String.class, String.class);// 取消权限检查暴力反射con.setAccessible(true);// 根据构造方法创建对象Student stu con.newInstance(liuyifei, 女);System.out.println(stu);}/*** Constructor getConstructor(Class... parameterTypes)* 根据参数类型获得对应的Constructor对象*/Testpublic void test01() throws Exception {// 获得Class对象ClassStudent c Student.class;// 获得无参数构造方法对象 注意记得在Student类中加无参构造方法不然会报错ConstructorStudent con c.getConstructor();// 根据构造方法创建对象Student student con.newInstance();System.out.println(student);// 获得有参数的构造方法对象ConstructorStudent con2 c.getConstructor(String.class, String.class, int.class);// 创建对象Student stu2 con2.newInstance(jack, 男, 18);System.out.println(stu2);}}5.反射之操作成员方法1Method类概述反射之操作成员方法的目的操作Method对象来调用成员方法 Method类概述每一个成员方法都是一个Method类的对象。2Class类中与Method相关的方法* Method getMethod(String name,Class...args); 根据方法名和参数类型获得对应的构造方法对象只能获得public的 * Method getDeclaredMethod(String name,Class...args); 根据方法名和参数类型获得对应的构造方法对象包括public、protected、(默认)、private的 * Method[] getMethods(); 获得类中的所有成员方法对象返回数组只能获得public修饰的且包含父类的 * Method[] getDeclaredMethods(); 获得类中的所有成员方法对象返回数组,只获得本类的包括public、protected、(默认)、 private的3Method对象常用方法* Object invoke(Object obj, Object... args) 调用指定对象obj的该方法 args调用方法时传递的参数 * void setAccessible(true) 设置暴力访问——是否取消权限检查true取消权限检查false表示不取消示例代码public class Demo04 {/*** Method[] getMethods();* 获得类中的所有成员方法对象返回数组只能获得public修饰的且包含父类的* Method[] getDeclaredMethods();* 获得类中的所有成员方法对象返回数组,只获得本类的包含private修饰的*/Testpublic void test03() {// 获得Class对象ClassStudent c Student.class;// 获得类中的所有成员方法对象返回数据只能获得public修饰的且包含父类的// Method[] methods c.getMethods();// 获得类中的所有成员方法对象返回数组,只获得本类的包含private修饰的Method[] methods c.getDeclaredMethods();for (Method method : methods) {System.out.println(method);}}/*** Method getDeclaredMethod(String name,Class...args);* 根据方法名和参数类型获得对应的构造方法对象*/Testpublic void test02() throws Exception {// 获得Class对象ClassStudent c Student.class;// 根据Class对象创建学生对象Student stu c.newInstance();// 获得sleep方法对应的Method对象Method m c.getDeclaredMethod(sleep);// 暴力反射m.setAccessible(true);// 通过m对象执行sleep方法m.invoke(stu);}/*** Method getMethod(String name,Class...args);* 根据方法名和参数类型获得对应的构造方法对象*/Testpublic void test01() throws Exception {// 获得Class对象ClassStudent c Student.class;// 根据Class对象创建学生对象Student stu c.newInstance();// // 获得study方法对应的Method对象 // Method m c.getMethod(study); // // 通过m对象执行study方法 // m.invoke(stu);// 获得study方法对应的Method对象Method m2 c.getMethod(study, int.class);// 通过m2对象执行study方法m2.invoke(stu, 8);}}6.反射之操作成员变量1Field类概述反射之操作成员变量的目的 通过Field对象给对应的成员变量赋值和取值 Field类概述 每一个成员变量都是一个Field类的对象。2Class类中与Field相关的方法Field getField(String name); 根据成员变量名获得对应Field对象只能获得public修饰Field getDeclaredField(String name); 根据成员变量名获得对应Field对象包括public、protected、(默认)、private的 Field[] getFields(); 获得所有的成员变量对应的Field对象只能获得public的 Field[] getDeclaredFields(); 获得所有的成员变量对应的Field对象包括public、protected、(默认)、private的3Field对象常用方法void set(Object obj, Object value) void setInt(Object obj, int i) void setLong(Object obj, long l) void setBoolean(Object obj, boolean z) void setDouble(Object obj, double d) Object get(Object obj) int getInt(Object obj) long getLong(Object obj) boolean getBoolean(Object ob) double getDouble(Object obj) void setAccessible(true); // 暴力反射设置为可以直接访问私有类型的属性。 Class getType(); // 获取属性的类型返回Class对象。setXxx方法都是给对象obj的属性设置使用针对不同的类型选取不同的方法。getXxx方法是获取对象obj对应的属性值的针对不同的类型选取不同的方法。示例代码public class Student {public String name;private String gender;public String toString() {return Student [name name , gender gender ];}}public class Demo05 {/*** Field[] getFields();* 获得所有的成员变量对应的Field对象只能获得public的* Field[] getDeclaredFields();* 获得所有的成员变量对应的Field对象包含private的*/Testpublic void test02(){// 获得Class对象ClassStudent c Student.class;// 获得所有的成员变量对应的Field对象// Field[] fields c.getFields();// 获得所有的成员变量对应的Field对象包括privateField[] fields c.getDeclaredFields();for (Field field : fields) {System.out.println(field);}}/*** Field getField(String name);* 根据成员变量名获得对应Field对象只能获得public修饰* Field getDeclaredField(String name);* 根据成员变量名获得对应Field对象包含private修饰的*/Testpublic void test01() throws Exception {// 获得Class对象ClassStudent c Student.class;// 创建对象Student stu c.newInstance();// 获得成员变量name对应的Field对象Field f c.getField(name);// 给成员变量name赋值// 给指定对象stu的name属性赋值为jackf.set(stu,jack);// 获得指定对象stu成员变量name的值System.out.println(f.get(stu)); // jack// 获得成员变量的名字System.out.println(f.getName()); //name// 给成员变量gender赋值// 获得成员变量gender对应的Field对象Field f1 c.getDeclaredField(gender);// 暴力反射f1.setAccessible(true);// 给指定对象stu的gender属性赋值为男f1.set(stu,男);System.out.println(stu);}}wx 搜索“自律的西瓜L”
http://www.hkea.cn/news/14586045/

相关文章:

  • 成都网站建设工资什么叫动漫设计与制作
  • 创意logo设计图片欣赏清远市企业网站seo联系方式
  • iis配置网站wordpress目录插件
  • 域名备案好了后怎么做网站中国菲律宾签证
  • 南宁公司的网站建设广告传媒公司名字大全最新
  • 网站被百度惩罚怎么办个人网站建设教程pdf
  • 做植物提取物好的推广网站wordpress 缩放窗 修改
  • 肇庆市住房和城乡房屋建设局网站网站建设中企
  • 四川工程建设项目一般挂什么网站网站游戏制作开发
  • 网站建设与发布wordpress主题怎么改
  • 前台网站开发可以用wordpress的云
  • 湖南网站定制赤峰市建设局网站
  • 苏州市城市建设局网站wordpress做一个html登陆页
  • 商业空间设计方案东莞seo全网营销
  • 做文案看什么网站网站建设设置分享功能
  • 如何设计营销型网站建设万网域名注册官网gname
  • 郑州网站优化排名推广北京商业设计网站
  • 网站开发与设计结课大作业网站建设推进表
  • 网站里面的超链接怎么做徐州网上房地产
  • 如何用apache建设网站郴州网站建设设计
  • 奢侈品+网站建设方案最新网球赛事新闻
  • 黄楼企业建站流程网站手册
  • vscode制作个人网站做外贸找生意上哪个网站
  • 网站后台 模板成品网站货源1277
  • 澄城县城乡建设局网站不用网站怎么做落地页
  • 成都网站建设电话标准北京时间久久网
  • 安徽省建设工程资料上传网站虚拟主机 便宜
  • 让网站引用字体软件开发工具排行榜
  • 做鞋子皮革有什么网站泉州网站建设哪里优惠
  • 网站架构功能模块及描述英文网站的外部链接 建设