CodeGym/หลักสูตรภาษาชวา/จาวาคอร์/กำลังโหลดคลาส ข้อมูลคงที่...

กำลังโหลดคลาส ข้อมูลคงที่...

มีอยู่

"สวัสดี Amigo! ฉันได้ยิน Rishi อธิบายสิ่งใหม่และน่าตื่นเต้นให้คุณฟัง?!"

“นั่นสินะคิม”

"หัวข้อของฉันจะน่าสนใจไม่น้อย ฉันอยากจะบอกคุณเกี่ยวกับวิธีการโหลดคลาสลงในหน่วยความจำ"

คลาสใน Java คือไฟล์บนดิสก์ที่มี bytecode ซึ่งเป็นโค้ด Java ที่คอมไพล์แล้ว

"ใช่ฉันจำได้."

เครื่อง Java จะไม่โหลดหากไม่ต้องการ ทันทีที่มีการเรียกไปยังชั้นเรียนที่ใดที่หนึ่งในโค้ด เครื่อง Java จะตรวจสอบเพื่อดูว่ามีการโหลดหรือไม่ และถ้าไม่เป็นเช่นนั้น มันจะโหลดและเริ่มต้นมัน

การเริ่มต้นคลาสเกี่ยวข้องกับการกำหนดค่าให้กับตัวแปรสแตติกทั้งหมดและการเรียกบล็อกการเริ่มต้นสแตติกทั้งหมด

"นั่นดูคล้ายกับการเรียกตัวสร้างบนวัตถุ แต่บล็อกการเริ่มต้นแบบคงที่คืออะไร"

"ถ้าคุณต้องการรันโค้ดที่ซับซ้อน (เช่น โหลดบางอย่างจากไฟล์) เพื่อเตรียมใช้งานออบเจกต์ เราสามารถทำได้ในคอนสตรัคเตอร์ อย่างไรก็ตาม ตัวแปรสแตติกไม่มีโอกาสนี้ แต่เนื่องจากความต้องการยังคงอยู่ คุณจึงทำได้ เพิ่มบล็อกหรือบล็อกการเริ่มต้นแบบคงที่ให้กับคลาส โดยพื้นฐานแล้วพวกมันเทียบเท่ากับตัวสร้างแบบคงที่"

นี่คือลักษณะ:

รหัส เกิดอะไรขึ้นจริงๆ
class Cat
{
public static int catCount = 0 ;
public static String namePrefix;

static
{
Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");
}

public static int maxCatCount = 50;

static
{
Properties p = new Properties();
p.loadFromFile("max.properties");
if (p.get("cat-max") != null)
maxCatCount = p.getInt("cat-max");
}

}
class Cat
{
public static int catCount;
public static String namePrefix;
public static int maxCatCount;

//Static constructors aren't allowed in Java,
//but if they were, everything
//would look like this
public static Cat()
{
catCount = 0;

Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");

maxCatCount = 50;

Properties p2 = new Properties();
p2.loadFromFile("max.properties");
if (p2.get("cat-max")!=null)
maxCatCount = p2.getInt("cat-max");
}
}

มันเหมือนกับสิ่งที่เกิดขึ้นเมื่อมีการเรียกคอนสตรัคเตอร์ ฉันได้เขียนมันเป็นตัวสร้างแบบคงที่ (ไม่มีอยู่จริง)

"ครับ ผมเข้าใจแล้ว"

"ดีมาก."

4
งาน
จาวาคอร์,  ระดับบทเรียน
ล็อค
Code entry
Your attention, please! Now recruiting code entry personnel for CodeGym. Turn up your focus, let your fingers relax, read the code, and then... type it into the appropriate box. Code entry is far from a useless exercise, though it might seem so at first glance: it allows a beginner to get used to and remember syntax (modern IDEs seldom make this possible).
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ