CodeGym/Java tanfolyam/Java Core/Osztályok, statikus adatok betöltése…

Osztályok, statikus adatok betöltése…

Elérhető

"Helló, Amigo! Hallottam, hogy Rishi valami újat és izgalmasat magyarázott neked?!"

– Így van, Kim.

"A témám nem lesz kevésbé érdekes. Szeretnék mesélni arról, hogyan töltődnek be az osztályok a memóriába."

A Java osztályai olyan fájlok a lemezen, amelyek bájtkódot tartalmaznak, ami egy lefordított Java kód.

"Igen emlékszem."

A Java gép nem tölti be őket, ha nem muszáj. Amint a kódban valahol hívás érkezik egy osztályhoz, a Java gép ellenőrzi, hogy be van-e töltve. És ha nem, akkor betölti és inicializálja.

Egy osztály inicializálása magában foglalja az összes statikus változóhoz értékek hozzárendelését és az összes statikus inicializálási blokk meghívását.

"Ez hasonlónak tűnik egy objektum konstruktorának meghívásához. De mi az a statikus inicializálási blokk?"

"Ha összetett kódot kell végrehajtani (például betölteni valamit egy fájlból) az objektumok inicializálásához, akkor ezt megtehetjük egy konstruktorban. A statikus változóknak azonban nincs ilyen lehetőségük. De mivel az igény továbbra is fennáll, megteheti adjunk hozzá statikus inicializálási blokkot vagy blokkokat az osztályokhoz. Ezek alapvetően egyenértékűek a statikus konstruktorokkal."

Így néz ki:

Kód Mi történik valójában
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");
}
}

Ez nagyon hasonlít ahhoz, ami akkor történik, amikor meghívnak egy konstruktort. Még (nem létező) statikus konstruktornak is írtam.

– Igen, értem.

"Nagyon jó."

4
Feladat
Java Core,  szintlecke
Zárt
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).
Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései