Heim> Java> javaLernprogramm> Hauptteil

java类加载器URLClassLoader怎么使用

WBOY
Freigeben: 2023-05-01 22:55:05
nach vorne
1187 Leute haben es durchsucht

类加载器之URLClassLoader的简单demo

public 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!"); } }
Nach dem Login kopieren

这里的 URL 资源,我用的是虚拟机里面的搭建的简单的 nginx 服务器,也是看着别人的教程搭建的,很简陋的一个服务器,哈哈。但是,这里足够使用了,如果没有条件,或者想简单一点,可以使用本地的文件系统。
使用file:///jar包地址这个替换就行了。

这里使用的 jar 包也很简单,但是我直接打成了 jar 包,只有 class 文件了,我反编译以下,把代码图片贴出来吧。
这个反编译不是全部代码,但是细节很简单,只有一个say()方法,可以参照下面的运行截图,补全。

java类加载器URLClassLoader怎么使用

然后是运行截图,注意我这里这个 -encoding utf-8 是指定使用编码字符集,因为cmd里面执行代码,如果有中文可能无法通过编译。

java类加载器URLClassLoader怎么使用

Das obige ist der detaillierte Inhalt vonjava类加载器URLClassLoader怎么使用. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!