您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 齐齐哈尔分类信息网,免费分类信息发布

java类加载器URLClassLoader怎么使用

2024/3/7 14:46:10发布30次查看
类加载器之urlclassloader的简单demopublic class test { public static void main(string[] args) throws classnotfoundexception, nosuchmethodexception, securityexception, instantiationexception, illegalaccessexception, illegalargumentexception, invocationtargetexception, ioexception { url[] urls = new url[] {new url("http://192.168.119.132:8080/images/animal.jar")}; urlclassloader classloader = new urlclassloader(urls); //加载类以后就可以得到 class 对象了 class<?> clazz = classloader.loadclass("com.learn.animal.dog"); classloader.close(); //加载完类以后就可以删除了。 //关闭 classloader, 否则会造成 资源泄露 resource leak //这里不使用默认的构造器,使用带参数的构造器 获取特殊的构造器 constructor<?> con = clazz.getdeclaredconstructor(string.class, int.class, int.class); //使用构造器创建对象 object ob = con.newinstance("小黑",12,50); //在调用 dog 对象的 say 方法,返回对 dog 对象自己的描述 method mtd0 = clazz.getmethod("say", new class<?>[] {}); string dogsay = (string)mtd0.invoke(ob, new object[] {}); system.out.println(dogsay); //再使用setter 方法,改变属性 模拟 dog 对象,逐渐长大,变胖 哈哈! system.out.println("three years later......"); method mtd1 = clazz.getmethod("setage", int.class); mtd1.invoke(ob, 15); method mtd2 = clazz.getmethod("setweight", int.class); mtd2.invoke(ob, 70); //注意这些方法是有返回值的! 返回值都是 object 类型,需要自己强转类型 dogsay = (string)mtd0.invoke(ob, new object[] {}); system.out.println(dogsay); system.out.println("it's over!"); }}
这里的 url 资源,我用的是虚拟机里面的搭建的简单的 nginx 服务器,也是看着别人的教程搭建的,很简陋的一个服务器,哈哈。但是,这里足够使用了,如果没有条件,或者想简单一点,可以使用本地的文件系统。
使用 file:///jar包地址 这个替换就行了。
这里使用的 jar 包也很简单,但是我直接打成了 jar 包,只有 class 文件了,我反编译以下,把代码图片贴出来吧。
这个反编译不是全部代码,但是细节很简单,只有一个 say() 方法,可以参照下面的运行截图,补全。
然后是运行截图,注意我这里这个 -encoding utf-8 是指定使用编码字符集,因为cmd里面执行代码,如果有中文可能无法通过编译。
以上就是java类加载器urlclassloader怎么使用的详细内容。
齐齐哈尔分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录