Mechanizm refleksji: Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja nieprzejrzana] |
Usunięta treść Dodana treść
m robot dodaje: nl:Reflectie (informatica) |
m →Przykłady: drobne techniczne, drobne redakcyjne |
||
Linia 5:
== Przykłady ==
===Java===
Poniższy przykład w [[Java|języku Java]] wykorzystuje pakiet [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/package-summary.html java.lang.reflect].
<source lang="java">
// bez refleksji
Foo foo = new Foo();
Linia 16 ⟶ 19:
Method method = cl.getMethod("hello", null);
method.invoke(cl.newInstance(), null);
</source>
Oba fragmenty tworzą instancję klasy <code>Foo</code>, następnie wywołują metodę <code>hello()</code> tej klasy. Różnica polega na tym, że w pierwszym fragmencie nazwa klasy i metody są częścią kodu źródłowego, podczas gdy w drugim fragmencie możliwe jest przeniesienie ich do zmiennych,
'''Mechanizm refleksji''' pozwala także na zdobywanie informacji o klasach w trakcie wykonania programu. W poniższym przykładzie Klasa <code>Main</code> sprawdza jaki jest typ zwracany przez metody klasy <code>Bar</code>.
<source lang="java">
public class Bar {
public String fun(Integer i) {
Linia 26 ⟶ 31:
}
}
import static java.lang.System.out;
import java.lang.reflect.*;
Linia 43 ⟶ 46:
}
}
</
{{Język programowania stub}}
|