



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自定义类加载器 1、类绑定package cn.itcast.demo;public class BoundDemo public static void main(String args) A a = new B();System.err.println(a.age);/100System.err.println(a.num);/100a.abc();/abc.1000 所有非静态分开方法都是在运行时绑定,动态绑定,其他的都是静态绑定/静态绑定是指在编译时已经指定引用的就是静态绑定a.aaa();/aaa.100class Apublic int age=100;public static int num = 100;public void abc()System.err.println(abc.100);public static void aaa()System.err.println(aaa.100);class B extends Apublic int age=1000;public static int num = 1000;public void abc()System.err.println(abc.1000);public static void aaa()System.err.println(aaa.1000);1、 类加载所有类加载器,都是ClassLoader的子类。类加载器永远以.class运行的目录为准。读取classpath根目录下的文件有以下几种方式:在Java项目中可以通过以下方式获取classspath下的文件:public void abc()/每一种读取方法,使用某个类获取AppclassloaderClassLoader cl = ReadFile.class.getClassLoader();URL url = cl.getResource(a.txt);System.err.println(url1 is:+url.getPath();/第二种方式,直接使用ClassLoaderURL url2 = ClassLoader.getSystemResource(a.txt);System.err.println(url2 is:+url2.getPath();在Tomcat中tomcat又声明了两个类载器:StandardClassLoader 加载tomcat/lib/*.jar - serlvetapi.jarWebappclassloader /加载 tomcat/webapps/project/web-inf/lib/*.jar & web-inf/classes/*.class在任何的项目中,获取类的加载器都应该使用以下方式:SomeClass(你写的).class.getClassLoader().getResource ;获取到这个类的类加载器在java项目中是:AppClassLoader在Web项目中:WebAppClassLoader测试父类加载器:public class OneServlet extends HttpServlet Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException ClassLoader loader = OneServlet.class.getClassLoader();/WebAppClassLoaderint index=1;while(loader!=null)System.err.println(index+)+类加载器是:+loader.getClass(); loader=loader.getParent();/获取父类加载器运行的结果:1类加载器是:class org.apache.catalina.loader.WebappClassLoader2类加载器是:class org.apache.catalina.loader.StandardClassLoader3类加载器是:class sun.misc.Launcher$AppClassLoader4类加载器是:class sun.misc.Launcher$ExtClassLoader2、 自定义类加载器JDK以哪一个类加载器读取A类的字节码,则A类就是被哪一个类加载器加载 的。一个同名的类,是否可以相互转换,要看是否是在同个类加载器中。package cn.itcast.demo;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import .URL;public class MyClassLoader2 extends ClassLoader /* * name:cn.itcast.demo.Person * 根据包名找到.class文件 * cn.itcast.demo.person = cn/itcast/demo/Person.class */public Class findClass(String name接收的是类名:cn.itcast.demo.Person) throws ClassNotFoundException String classNameWithPackage=name;Class cls = null;try /先将name = name.replace(.,/);name +=.class;处理成路径名/确定目录URL url = MyClassLoader2.class.getClassLoader().getResource(name);System.err.println(:+url.getPath();File file = new File(url.getPath();InputStream in = new FileInputStream(file);/读取这个.class文件的字节码byte b = new bytein.available();/直接声明这个字节大小为这个文件的大小int len = in.read(b);/len=621System.err.println(len);/* * 第一个参数是类名 */cls = defineClass(classNameWithPackage,b,0,len); catch (Exception e) e.printStackTrace();return cls;测试类自定义类加载器“public class ClassLoaderDemo public static void main(String args) throws Exception MyClassLoader2 mc = new MyClassLoader2();Class cls = mc.findClass(cn.itcast.demo.Person);Object o = cls.newInstance();System.err.println(toString:+o+,+o.getClass().getClassLoader();/直接使用peron是 AppClassLoaderSyste
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省紫金县2026届化学高一第一学期期末调研模拟试题含解析
- 情景转述课件
- 2026届山东省莒县第二中学实验班化学高一上期中质量检测试题含解析
- 威海市重点中学2026届高二化学第一学期期中复习检测模拟试题含解析
- 园林绿化个人年度工作方案
- 医院医生年度工作方案
- 成功的茶叶营销策划方案
- 社区三八妇女节活动方案
- 识字试卷测试题及答案
- 鼻肠管留置操作流程
- 工作总结及工作思路(输电运维班)
- 气管及支气管内插管
- Unit 14 I remember meeting all of you in Grade 7(大单元教材分析)教学课件 人教新目标九年级英语全册
- 2025年高处吊篮安装拆卸工(建筑特殊工种)证考试题库
- 2025年新云南会计灵活用工协议书
- 2024年扬州市辅警真题
- 2025内蒙古森工集团招聘工勤技能人员3100人笔试参考题库附带答案详解析集合
- 登销记以及运统46系统运用21课件
- 河蟹的营养需要与饲料优化技术
- GHTF—质量管理体系--过程验证指南中文版
- 数学用表A4(锐角三角函数)
评论
0/150
提交评论