(c) Martin Kot

Přehled metod třídy Class

Ukázkový program na použití třídy Class

forName(String)

Zpět na přehled

Metoda vrací objekt třídy Class, který popisuje uvedenou třídu. Parametrem je jméno třídy kvalifikované prostřednictvím jména balíku.
Metoda si třídu dynamicky zavádí (pokud již není zavedena), proto se často používá na zavádění tříd, se kterými není aplikace sestavena a potřebuje je, za chodu.
 

getClasses()

Zpět na přehled

Metoda vrací pole objektů třídy Class reprezentující všechny public třídy a rozhraní, které jsou členy třídy reprezentované tímto objektem třídy Class. To zahrnuje všechny členské public třídy a rozhraní zděděné ze supertřídy a členské public třídy a rozhraní definované třídou.
 

getClassLoader()

Zpět na přehled

Metoda vrací objekt třídy ClassLoader použitý pro zavedení této třídy. Jestliže nebyla metoda zavedena pomocí objektu ClassLoader , vrací metoda hodnotu null.
 

getComponentType()

Zpět na přehled

Metoda vrací objekt třídy Class popisující typ komponenty této třídy v případě, že se jedná o typ pole. Jestliže objekt třídy Class nereprezentuje typ pole, vrací metoda null.
 

getConstructor(Class[])

Zpět na přehled

Parametry metody je pole objektů třídy Class popisující typy parametrů konstruktoru v deklarovaném pořadí. Návratovou hodnotou je objekt třídy Constuctor, reflektující specifikovaný veřejný konstruktor této třídy.

Příklad použití metody:

/*Nejprve se vytvoří objekt Class popisující řetězec. Potom se vytvoří pole s jednou instancí třídy Class. Do pole uloží objekt třídy Class popisující řetězec, toto pole slouží jako popis parametrů konstruktoru. Pomocí metody getConstructor() získaný objekt třídy konstruktor převede na řetězec a vypíše.*/

Class instance = Class.forName("java.lang.String");

Class[] array = new Class[1];

array[0] = Class.forName("java.lang.String");

System.out.println(instance.getConstructor(array).toString());

 

getConstructors()

Zpět na přehled

Metoda vrací pole objektů třídy Constructor, které reprezentují veřejné konstruktory této třídy.

Příklad použití metody:

/*Nejprve se vytvoří objekt Class popisující řetězec. Pomocí metody getConstructors() se získá pole objektů třídy Constructor. Ty jsou po převedení na řetězec vypsány. */

Class instance = Class.forName( "java.lang.String" );

Constructor[] result = instance.getConstructors();

for( int i = 0 ; i < result.length ; i++ ) {

System.out.println( result[i].toString() );

}

 

getDeclaredClasses()

Zpět na přehled

Jestliže objekt této třídy reprezentuje referenční typ, pak metoda vrací pole objektů třídy Class obsahující seznam všech tříd a rozhraní, jež jsou členy této třídy nebo rozhraní. Seznam nezahrnuje třídy zděděné z nadtříd. Jestliže neexistují členské třídy nebo rozhraní nebo tento objekt Class reprezentuje primitivní typ, pak metoda vrátí pole nulové délky.

Příklad použití metody:

/*Do proměnné instance uloží objekt Class popisující třídu URLConnection a metodou getDeclaredClasses() do pole result uloží objekty Class popisující všechny členské třídy a rozhraní.*/

 

Class instance = Class.forName( "java.net.URLConnection" );

Class[] result = instance.getDeclaredClasses();

 

getDeclaredConstructor(Class[])

Zpět na přehled

Parametrem metody je pole objektů třídy Class popisující typy parametrů konstruktoru v deklarovaném pořadí. Návratovou hodnotou je objekt třídy Constructor, který reflektuje specifikovaný deklarovaný konstruktor této třídy.
 

getDeclaredConstructors()

Zpět na přehled

Metoda vrací pole objektů třídy Constructor, které reflektují deklarované konstruktory této třídy.
 

getDeclaredField(String)

Zpět na přehled

Metoda vrací objekt třídy Field, který reflektuje specifikované deklarované pole třídy nebo rozhraní reprezentované tímto objektem třídy Class. Jako parametr se dává řetězec specifikující jednoduché jméno pole.
 

getDeclaredFields()

Zpět na přehled

Metoda vrací pole objektů třídy Field, které reflektují všechna deklarovaná pole této třídy.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu URLConnection a metodou getDeclaredFields() získá popis všech deklarovaných polí. V cyklu jsou objekty třídy Field převedeny na řetězec a vypsány.*/

 

Class instance = Class.forName( "java.net.URLConnection" );

Field[] result = instance.getDeclaredFields();

for( int i = 0 ; i < result.length ; i++ ) {

System.out.println( result[i].toString() );

}

 

getDeclaredMethod(String, Class[])

Zpět na přehled

Metoda požaduje parametry - řetězec reprezentující jednoduché jméno metody
- pole objektů třídy Class popisující typy parametrů metody v deklarovaném pořadí
Návratovou hodnotou je objekt třídy Method reflektující specifikovanou deklarovanou metodu této třídy nebo rozhraní.
 

getDeclaredMethods()

Zpět na přehled

Metody vrací pole objektů třídy Method, které reflektují deklarované metody této třídy s přístupem public, protected, privatte nebo s implicitním přístupem (nikoliv však metody zděděné z nadtřídy). Pokud objekt třídy Class nereprezentuje třídu nebo rozhraní nebo pokud zde neexistují deklarované metody, vrátí metoda pole nulové délky.
 

getDeclaringClass()

Zpět na přehled

Pokud tento objekt třídy Class reprezentuje třídu nebo rozhraní, které jsou členy jiné třídy nebo rozhraní, vrací metoda objekt třídy Class, jenž popisuje deklarující třídu nebo rozhraní. Jestliže tato třída není členem jiné třídy nebo rozhraní nebo jestliže reprezentuje primitivní typ, vrací metoda null.

 

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu String a pole dvou objektů Class. Metodou getMethod() se získá objekt třídy Method popisující metodu s názvem "indexOf" a dvěma parametry (String a Int). Následně je pomocí metody GetDeclaringClass() získan objekt Class popisující třídu ve které je třída Method deklarována. Nakonec je vypsán název této deklarující třídy.*/

Class instance = Class.forName("java.lang.String");

Class[] array = new Class[2];

array[0] = Class.forName("java.lang.String");

array[1] = Integer.TYPE;

Method method = instance.getMethod("indexOf",array);

System.out.println(method.getDeclaringClass().getName());

 

 

getField(String)

Zpět na přehled

Metoda vyžaduje jako parametr řetězec reprezentující jednoduché jméno pole (proměnné). Pokud objekt třídy Class reprezentuje třídu nebo rozhraní, vrací metoda objekt třídy Field reflektující specifikované veřejné pole této třídy.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu Event. Do proměnné result je uložen objekt třídy Field popisující pole s názvem "id". Tento objekt je po převedení na řetězec vypsán.*/

 

Class instance = Class.forName( "java.awt.Event" );

Field result = instance.getField( "id" );

System.out.println( result.toString() );

 

getFields()

Zpět na přehled

Metoda vrací pole objektů třídy Field, které reflektují veřejná pole této třídy (včetně zděděných z nadtříd).

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu Event. Do pole result jsou uloženy objekty třídy Field popisující všechna pole třídy Event. Tyto objekty jsou v cyklu po převedení na řetězec vypsány.*/

 

Class instance = Class.forName( "java.awt.Event" );

Field[] result = null;

result = instance.getFields();

 

for( int i = 0 ; i < Array.getLength( result ) ; i++ ) {

System.out.println( result[i].toString() );

}

 

getInterfaces()

Zpět na přehled

Jestliže objekt třídy Class reprezentuje třídu, pak metoda vrací pole odkazující na všechna rozhraní, která tato třída implementuje. Pořadí rozhraní uvedených v poli je stejné jako pořadí, v němž jsou rozhraní uvedena za klauzulí implements v deklarační části třídy. Jestliže třída neimplementuje žádné rozhraní, pak metoda vrací pole nulové délky.
Pokud objekt třídy reprezentuje rozhraní, pak metoda vrací pole odkazující na všechna rozhraní, která toto rozhraní rozšiřuje.
 

getMethod(String, Class[])

Zpět na přehled

Metoda požaduje jako parametr řetězec reprezentující jméno metody a pole objektů třídy Class popisující typy parametrů metody v deklarovaném pořadí.
Pokud objekt třídy Class reprezentuje třídu nebo rozhraní, vrací metoda objekt třídy Method reflektují specifikované veřejné metody této třídy. Pokud objekt třídy Class nereprezentuje třídu nebo rozhraní, vrátí metoda hodnotu null.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu String a pole dvou objektů Class. Metodou getMethod() se získá objekt třídy Method popisující metodu s názvem "indexOf" a dvěma parametry (String a Int). Ten je po převedení na řetězec vypsán.*/

Class instance = Class.forName("java.lang.String");

Class[] array = new Class[2];

array[0] = Class.forName("java.lang.String");

array[1] = Integer.TYPE;

System.out.println(instance.getMethod("indexOf",array).toString());

 

getMethods()

Zpět na přehled

Pokud objekt třídy Class reprezentuje třídu nebo rozhraní, vrací metoda pole objektů třídy Method reflektující veřejné metody deklarované v této třídě (včetně veřejných metod zděděných z nadtřídy). Pokud objekt třídy Class nereprezentuje třídu nebo rozhraní nebo pokud zde neexistují veřejné metody, vrátí metoda pole nulové délky.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu String. Metodou getMethods() se získá pole objektů třídy Method popisujících všechny metody třídy String. Ty jsou v cyklu po převedení na řetězec vypsány.*/

Class instance = Class.forName( "java.lang.String" );

Method[] result = instance.getMethods();

 

for( int i = 0 ; i < result.length ; i++ ) {

System.out.println( result[i].toString() );

}

 

getModifiers()

Zpět na přehled

Pokud objekt třídy Class reprezentuje třídu nebo rozhraní, vrací metoda celočíselnou hodnotu reprezentující modifikátory použité k deklaraci této třídy. K rozkódování této celočíselné hodnoty by měla být použita třída Modifier.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu StringBuffer. Metodou getModifiers() jsou získán do celočíselné hodnoty zakódovány modifikátory třídy StringBuffer. Tyto modifikátory jsou pomocí metody třídy Modifikátor dekódovány, převedeny na řetězec a vypsány.*/

Class instance = Class.forName("java.lang.StringBuffer");

int modifiers = instance.getModifiers();

System.out.println(Modifier.toString(modifiers));

 

getName()

Zpět na přehled

Metoda vrací plně kvalifikované jméno třídy nebo rozhraní reprezentovaného tímto objektem třídy Class. Jestliže objekt reprezentuje třídu pole, pak metoda vrací řetězec tolika levých hranatých závorek, kolik rozměrů má dané pole. Po závorkách je uveden kód identifikující typ prvků, které pole obsahuje.
Seznam kódů používaných k indikaci typů elementů pole:

Kód
Typ
[
pole
B
byte
C
char
D
double
F
float
I
int
J
long
L plně kvalifikované jméno
třída nebo rozhraní
S
short
Z
boolean

 

Příklad použití metody:

/*Vypíše jméno třídy reprezentované objektem třídy Class uloženém v poli result na dané pozici.*/

 

System.out.println( result[2].getName() );

 

getResource(String)

Zpět na přehled

Metoda požaduje parametr - jméno systémového zdroje. Metoda vyhledá systémový zdroj specifikovaný tímto jménem pro tento objekt třídy Class a vrací objekt třídy URL, jenž je spojen s tímto zdrojem.
 

getResourceAsStream(String)

Zpět na přehled

Metoda požaduje parametr - jméno systémového zdroje. Metoda vyhledá systémový zdroj specifikovaný tímto jménem pro tento objekt třídy Class a vrací objekt třídy InputStream, jenž je spojen s tímto zdrojem.
 

getSigners()

Zpět na přehled

Metoda vrací pole objektů třídy Object, které reprezentují digitální pečeti pro tuto třídu.
 

getSuperclass()

Zpět na přehled

Jestliže objekt třídy Class reprezentuje třídu jinou než Object, pak tato metoda vrací objekt třídy Class, jenž reprezentuje jeho nadtřídu. Pokud však objekt reprezentuje rozhraní, třídu Object nebo primitivní typ, pak metoda vrací hodnotu null.
 

isArray()

Zpět na přehled

Metoda vrací hodnotu true, jestliže tento objekt popisuje typ pole. Jinak metoda vrací false.

Příklad použití metody:

/*Vypíše, jestli je třída ImageObserver typu pole.*/

 

Class instance = Class.forName("java.awt.image.ImageObserver");

System.out.println( instance.isArray() );

 

isAssignableFrom(Class)

Zpět na přehled

Tato metoda určuje, zda je, nebo není typ reprezentovaný třídou Class v parametru metody přiřaditelný typu třídy objektu, na který je zpráva poslána. Pokud tato třída reprezentuje třídu, pak musí být tato třída stejná jako třída v parametru nebo nadtřída třídy v parametru. Pokud třída reprezentuje rozhraní, pak musí být tato třída stejná jako třída v parametru, nebo musí být nadrozhraním třídy v parametru. Jestliže tato třída reprezentuje primitivní typ, pak musí být stejná jako třída v parametru.
 

isInstance(Object)

Zpět na přehled

Tato metoda určuje, zda může být objekt reprezentovaný třídou v parametru metody převeden na typ objektu této třídy, aniž by se vyhodila výjimka ClassCastException. Tato metoda je dynamickým ekvivalentem operátoru instanceof.

Příklad použití metody:

/*Vypíše, zda může být objekt třídy Object převeden na objekt třídy StringBuffer.*/

 

Object o = new Object();

Class instance = Class.forName("java.lang.StringBuffer");

System.out.println( instance.isInstance( o ) );

 

isInterface()

Zpět na přehled

Tato metoda vrací hodnotu true, pokud tento objekt popisuje rozhraní. Jinak metoda vrací hodnotu false.

Příklad použití metody:

/*Vypíše, zda je ImageObserver rozhraní, nebo není.

 

Class instance = Class.forName("java.lang.image.ImageObserver");

System.out.println( instance.isInterface() );*/

 

isPrimitive()

Zpět na přehled

Tato metoda vrací hodnotu true, pokud tento objekt popisuje primitivní typ. Jinak metoda vrací hodnotu false.

Příklad použití metody:

/*Vypíše, zda je Int primitivní typ.*/

 

System.out.println( Integer.TYPE.isPrimitive() );

 

newInstance()

Zpět na přehled

 Tato metoda vytváří novou instanci třídy reprezentované tímto objektem třídy Class pomocí následujících kroků:

  1. Vytvoří nový objekt třídy reprezentované objektem třídy Class.
  2. Zavolá konstruktor pro tuto třídu, který nemá žádné argumenty.
  3. Vrátí odkaz na inicializovaný objekt.
Odkaz vracený touto metodou je vhodné přetypovat na typ objektu, který byl instanciován.

Příklad použití metody:

/*Vytvoří se instance třídy Class popisující třídu String. Do pole objektů třídy Constructor se uloží popis všech konstruktorů třídy String. S pomocí konstruktoru v poli na pozici s indexem 1 se vytvoří nový objekt String a uloží se do proměnné newObject. Tento nový objekt reprezentuje řetězec uvedený v  proměnné arguments. Nakonec je tento řetězec vypsán.*/

 

Class instance = Class.forName("java.lang.String");

Constructor[] constructors = instance.getConstructors();

Object[] arguments = { "We made a new object!" };

String newObject = (String)constructors[1].newInstance(arguments);

System.out.println( newObject );

 

toString()

Zpět na přehled

Metoda vrací řetězec obsahující jméno třídy s předponou buď "class", nebo "interface".