هذه المقالة يدرس بشكل أساسي محتويات ذات صلة لتحليل مثيلات اللودر الفئة المخصصة في لغة Java ، على النحو التالي.
محمل الفصل الذي كتبته
تجدر الإشارة إلى أنه إذا كنت تريد اختبار هذه المثيل ، فيجب عليك أولاً إنشاء دليل C: // myjava على محرك C. ثم ضع ملف Java المقابل في هذا الدليل. ووضع ملف .clas الذي تم إنشاؤه في دليل c: //myjava/com/lg.test ، وإلا فلن يتم العثور عليه. هذا شيء يجب الانتباه إليه. .
فئة fileClassloader:
package com.lg.test ؛ استيراد java.io.bytearrayoutputstream ؛ استيراد java.io.fileinputstream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛/*** تم إنشاؤه في 2016/8/6. */الفئة العامة fileClassloader يمتد classloader {String rootdir = null ؛ Public FileClassloader (String rootdir) {this.rootdir = rootdir ؛}@تجاوز الفئة المحمية <؟> FindClass (سلسلة ClassName) ClassNotFoundException {// أولاً ، تم تحميل ما إذا كان قد تم تحميله. class <؟> c = findloadedClass (className) ؛ string path = rootdir + "/" + classname.replace ('.' ، '/') + ".class" ؛ if (c! = null) {return c ؛ NULL) {return c ؛} آخر {/*إذا لم ينجح ، تحميل مرة أخرى. لأن جوهر bytecode هو صفيف بايت*/inputStream هو = null ؛ bytearrayoutputStream outputStream = جديد bytearrayoutputStream () ؛ حاول {iS = جديد fileInputStream (path) ؛ byte []] 0. {E.PrintStackTrace () ؛}}}} الإرجاع C ؛}}}}}العرض التجريبي:
Package com.lg.test ؛/*** تم إنشاؤه بواسطة 2016/8/6. *//*يحمل تحميل الفئة نفسه نفس الفئة ، و Hascode هو نفسه. تحميل لوادر فئة مختلفة نفس الفئة ، و hascode مختلفة. */demo class public {public static void main (string [] args) {fileClassloader loader = new fileClassloader ("c: // myjava") ؛ fileClassloader loader2 = new fileClassloader ("c: // myjava") ؛ جرب {class <؟> c = loader.findClass ("com.lg.test.helloworld") ؛ class <؟> c0 = loader.findClass ("com.lg.test.helloworld") ؛ class <؟> c1 = loader2 c2 = loader.findClass ("com.lg.test.demo01") ؛ class <؟> c3 = loader.findclass ("com.lg.test.demo01") ؛ class <؟> C3 = loader.findClass ("java.lang.string") ؛ system.out.println ( .hashcode ()) ؛ system.out.println (c1.getClassloader ()) ؛ system.out.println (c2.hashcode ()) ؛ system.out.println (c2.getClassloader () (classnotfoundException e) {E.PrintStackTrace () ؛}}}النتيجة النهائية هي:
366712642
sun.misc.launcher$ appclasslader@4e0e2f2a
366712642
sun.misc.launcher$ appclasslader@4e0e2f2a
366712642
sun.misc.launcher$ appclasslader@4e0e2f2a
1829164700
sun.misc.launcher$ appclasslader@4e0e2f2a
2018699554
باطل
إذا قمت بتحديد محمل فئة الشبكة ، فأنت بحاجة إلى استخدام عنوان URL. هذا شيء يجب الانتباه إليه.
يمكنك تغيير قيمة ROOTDIE إلى com.bjsxt.cn. ثم استخدم url.openstream ().
ما ورد أعلاه هو كل شيء عن تحليل مثيلات تحميل الفئة المخصصة في لغة جافا. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!