ชั้นเรียนภายใน
คลาส A {// inner1 สามารถใช้งานได้หลังจาก A ถูกเริ่มต้นเท่านั้นนั่นคือมันจะถูกเรียกโดยวัตถุ A. คลาส INNER1 {int k = 0; // int คงที่ j = 0; // หลังจากโหลด A Inner1 จะไม่ถูกโหลดดังนั้นตัวแปรคงที่ j นี้ไม่สามารถใช้งานได้ทันทีและมีการรายงานข้อผิดพลาดสุดท้าย int z = 0; /*โมฆะคงที่ says1 () {}*/void says2 () {}} // inner2 สามารถใช้คลาสคงที่ inner2 {int k = 0; int คงที่ j = 0; int สุดท้าย z = 0; โมฆะคงที่ says1 () {} void says2 () {}} // การเรียกคลาสภายในคลาส void c () {int สุดท้าย x = 0; // หลังจากการดัดแปลงครั้งสุดท้ายใหม่ A (). inner1 ใหม่ (); // ชั้นในที่ไม่คงที่ 1; a.inner2.say1 (); ใหม่ a.inner2 (). say2 (); // วิธีที่ไม่คงที่ says2 () ต้องเรียกวัตถุของคลาสที่เป็นของคลาส inner3 {void print () {system.out.println (x); }} / * * การเรียกคลาสภายในท้องถิ่นในวิธีการจะต้องประกาศหลังจากการประกาศ * คำสั่งการดำเนินการในวิธีการมาจากบนลงล่างและคลาสนี้ * เทียบเท่ากับตัวแปรท้องถิ่นแน่นอนคุณต้องประกาศก่อนแล้วใช้ * / new inner3 () พิมพ์ (); - คลาสโหลดเดอร์ java.lang.classloader
ความรับผิดชอบพื้นฐานของคลาส java.lang.classloader คือการค้นหาหรือสร้างรหัสไบต์ที่เกี่ยวข้องตามชื่อของคลาสที่ระบุจากนั้นกำหนดคลาส Java จากรหัสไบต์เหล่านี้นั่นคืออินสแตนซ์ของคลาส java.lang.class นอกจากนี้ Classloader ยังรับผิดชอบในการโหลดทรัพยากรที่ต้องการโดยแอปพลิเคชัน Java เช่นไฟล์รูปภาพและไฟล์การกำหนดค่า อย่างไรก็ตามบทความนี้กล่าวถึงฟังก์ชั่นของคลาสการโหลดเท่านั้น เพื่อให้ความรับผิดชอบในการโหลดคลาสนี้เสร็จสมบูรณ์ ClassLoader มีชุดของวิธีการ:
getParent () ส่งคืนตัวโหลดคลาสแม่ของคลาสโหลดเดอร์
LoadClass (ชื่อสตริง) โหลดคลาสด้วยชื่อชื่อและผลลัพธ์ที่ส่งคืนเป็นอินสแตนซ์ของคลาส java.lang.class
FindClass (ชื่อสตริง) มองหาชื่อคลาสชื่อและผลลัพธ์ที่ส่งคืนเป็นอินสแตนซ์ของคลาส java.lang.class
findloadedClass (ชื่อสตริง) ค้นหาชื่อชื่อที่โหลดชื่อและผลลัพธ์ที่ส่งคืนเป็นอินสแตนซ์ของคลาส java.lang.class
defineclass (ชื่อสตริง, byte [] b, int ปิด, int len) แปลงเนื้อหาในอาร์เรย์ไบต์ b เป็นคลาส Java และผลลัพธ์ที่ส่งคืนเป็นอินสแตนซ์ของคลาส java.lang.class วิธีนี้ประกาศสุดท้าย
Resolveclass (คลาส <?> c) เชื่อมโยงคลาส Java ที่ระบุ
คลาสสาธารณะ ClassloaderTest ขยาย classloader {โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนความปลอดภัย exception, nosuchmethodexception {// ตัวโหลดคลาสราก, url core class url url [] urls = sun.misc.launcher.getBootstrapClassPath () สำหรับ (url u: urls) {system.out.println (u); } // ตัวโหลดคลาสขยายคุณสมบัติของระบบที่โหลด: คลาสภายใต้พา ธ ที่ส่งคืนโดย java.ext.dirs system.err.println ("ส่วนขยาย classloader) loader" + classloader.getSystemClassloader (). getParent ()); // ไม่ใช่ความสัมพันธ์ที่สืบทอด // แอปพลิเคชัน (แอปพลิเคชันระบบคลาส loader) คลาสโหลดเดอร์, ระบบการโหลดสภาพแวดล้อมระบบตัวแปรตัวแปรหรือ classpath // แพ็คเกจ JAR ที่ระบุและ classpath System.err.println ("แอปพลิเคชัน (ระบบ) คลาสโหลดเดอร์" + classloader.getSystemClassloader ()); // system.out.println (system.getenv ("path")); // system.out.println (system.getenv ("classpath")); -