JavaクラスローダーURLClassLoaderの使用方法

WBOY
リリース: 2023-05-01 22:55:05
転載
1361 人が閲覧しました

クラスローダーのURLClassLoaderの簡単なデモ

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&#39;s over!");
	}
}
ログイン後にコピー

ここのURLリソースは、仮想マシン上に構築された簡単なnginxサーバーを使用しています。これも他の人のチュートリアルに従って構築しました。非常に簡単です。サーバーですね、笑。ただし、これでも十分に使用できますので、特に条件がない場合や、よりシンプルにしたい場合は、ローカル ファイル システムを使用することもできます。
使用 file:///jar パッケージ アドレス これを置き換えるだけです。

ここで使用しているjarパッケージも非常にシンプルですが、クラスファイルのみのjarパッケージに直接打ち込んだので、以下を逆コンパイルしてコード画像を掲載します。
この逆コンパイルはコード全体ではありませんが、詳細は非常に単純です。say() メソッドは 1 つだけです。完了するには、以下の実行中のスクリーンショットを参照してください。

JavaクラスローダーURLClassLoaderの使用方法

次に、実行中のスクリーンショットがあります。ここでの -encoding utf-8 は、使用するエンコード文字セットを指定していることに注意してください。これは、cmd で実行されるコードがコンパイルされない可能性があるためです。中国人がいる。

JavaクラスローダーURLClassLoaderの使用方法

以上がJavaクラスローダーURLClassLoaderの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!