|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.ranides.assira.reflection.ClassInspector
public final class ClassInspector
| Method Summary | ||
|---|---|---|
static Class<?> |
box(Class<?> clazz)
Zamienia typ prymitywny na odpowiadający mu wrapper, np int
zamienia na Integer. |
|
static Method |
findDeclaredMethod(Class<?> clazz,
String name)
Zwraca zadeklarowaną metodę o podanej nazwie bez względu na pobierane argumenty |
|
static Method |
findDeepMethod(Class<?> clazz,
String name)
Zwraca zadeklarowaną metodę o podanej nazwie bez względu na pobierane argumenty. |
|
static Method |
findMethod(Class<?> clazz,
String name)
Zwraca publiczną metodę o podanej nazwie bez względu na pobierane argumenty. |
|
static Class<?> |
forName(String className)
Próbuje utworzyć klasę o podanej nazwie za pomocą ClassLoadera powiązanego z bieżącym wątkiem. |
|
static List<Class<?>> |
getAncestors(Class<?> clazz)
Zwraca listę wszystkich klas w łańcuchu dziedziczenia. |
|
static
|
getAncestors(Class<T> clazz,
Class<? super T> root)
Zwraca listę wszystkich klas w łańcuchu dziedziczenia. |
|
static
|
getAncestors(T object)
Zwraca listę wszystkich klas w łańcuchu dziedziczenia. |
|
static
|
getAncestors(T object,
Class<? super T> root)
Zwraca listę wszystkich klas w łańcuchu dziedziczenia. |
|
static
|
getAncestorTree(Class<T> clazz)
Zwraca wszystkie klasy w łańcuchu dziedziczenia oraz wszystkie zaimplementowane interfejsy. |
|
static Class<?> |
getClass(Object value)
|
|
static Class<?>[] |
getClass(Object[] values)
Grupowa wersja funkcji Class.getClass. |
|
static
|
getConstructor(Class<T> clazz,
Class... args)
Zwraca dowolny (niekoniecznie publiczny) konstruktor o dokładnie pasujących typach argumentów |
|
static
|
getConstructor(Class<T> clazz,
int count)
Zwraca dowolny (niekoniecznie publiczny) konstruktor o pobierający wskazaną liczbę argumentów. |
|
static Method |
getDeclaredMethod(Class<?> clazz,
String name,
Class<?>... params)
Zwraca zadeklarowaną metodę o dokładnie pasujących typach argumentów |
|
static Method |
getDeclaredMethod(Class<?> clazz,
String name,
int count)
Zwraca zadeklarowaną metodę o podanej nazwie, pobierającą wskazaną ilość argumentów. |
|
static Method |
getDeepMethod(Class<?> clazz,
String name,
int count)
Zwraca zadeklarowaną metodę o podanej nazwie, która pobiera podaną ilość argumentów. |
|
static Method[] |
getDeepMethods(Class<?> clazz)
Zwraca wszystkie metody zadeklarowane i/lub odziedziczone przez klasę, łącznie z chronionymi i prywatnymi. |
|
static String |
getFQLocation(Class<?> clazz)
Zwraca ścieżkę do pliku .class, z którego została załadowana klasa. |
|
static String |
getLocation(Class<?> clazz)
Zwraca lokalizację, w której został wyszukany odpowiedni plik .class z definicją załadowanej klasy. |
|
static Method |
getMethod(Class<?> clazz,
String name,
Class<?>... params)
Zwraca publiczną metodę o dokładnie pasujących typach argumentów |
|
static Method |
getMethod(Class<?> clazz,
String name,
int count)
Zwraca publiczną metodę o podanej nazwie, pobierającą określoną ilość argumentów. |
|
static Object |
getStaticField(Class<?> clazz,
String name)
Wyszukuje i odczytuje wartość klasycznego pola statycznego w obiekcie (najczęściej będzie to publiczna stała). |
|
static
|
hasConstructor(Class<T> clazz,
Class... args)
Sprawdza, czy klasa posiada (niekoniecznie publiczny) konstruktor o dokładnie pasujących typach argumentów |
|
static
|
hasConstructor(Class<T> clazz,
int count)
Sprawdza, czy klasa posiada (niekoniecznie publiczny) konstruktor pobierający wskazaną liczbę argumentów |
|
static boolean |
hasDeclaredMethod(Class<?> clazz,
String name,
Class<?>... params)
Sprawdza, czy klasa posiada zadeklarowaną metodę o dokładnie pasujących typach argumentów |
|
static boolean |
hasDeclaredMethod(Class<?> clazz,
String name,
int count)
Sprawdza, czy obiekt posiada zadeklarowaną metodę odpowiedniej ilości argumentów |
|
static boolean |
hasMethod(Class<?> clazz,
String name,
Class<?>... params)
Sprawdza, czy obiekt posiada publiczną metodę o dokładnie pasujących typach argumentów |
|
static boolean |
hasMethod(Class<?> clazz,
String name,
int count)
Sprawdza, czy obiekt posiada publiczną metodę odpowiedniej ilości argumentów |
|
static boolean |
isAssignableFrom(Class<?>[] supers,
Class<?>[] values)
Grupowa wersja funkcji Class.isAssignableFrom - sprawdza, czy odpowiednie
elementy z tablicy supers są assignable względem odpowiednich
elementów values, czyli czy for(i) supers[i].isAssignableFrom( values[i] )
Uwzględnia autoboxing argumentów. |
|
static boolean |
isAssignableFrom(Class<?> ssuper,
Class<?> value)
Rozszerzenie standardowej metody Class.isAssignableFrom. |
|
static boolean |
isBool(Class<?> clazz)
Sprawdza, czy podana klasa reprezentuje typ logiczny - bez względu na to, czy przekazana klasa reprezentuje typ prymitywny ( boolean),
czy wrapper (np Boolean). |
|
static boolean |
isBoxed(Class<?> clazz)
Sprawdza, czy podana klasa reprezentuje opakowany typ prymitywny (np Integer). |
|
static boolean |
isInstance(Class<?>[] supers,
Object[] values)
Sprawdza, czy odpowiednie obiekty z tablicy values są istancjami
odpowiednich klas z tablicy supers. |
|
static boolean |
isInstance(Class<?> ssuper,
Object value)
Sprawdza, czy podany obiekt value jest instancją klasy ssuper. |
|
static boolean |
isNumber(Class<?> clazz)
Sprawdza, czy podana klasa reprezentuje typ numeryczny - bez względu na to, czy przekazana klasa reprezentuje typ prymitywny (np float),
czy wrapper (np Double), czy Number. |
|
static boolean |
isPrimitive(Class<?> clazz)
Sprawdza, czy podana klasa reprezentuje nieopakowany typ prymitywny (np int). |
|
static
|
matchConstructor(Class<T> clazz,
Object... values)
Zwraca konstruktor o najlepiej pasujących typach argumentów. |
|
static Method |
matchMethod(Class<?> clazz,
String name,
Object... values)
Zwraca metodę o najlepiej pasujących typach argumentów. |
|
static void |
setStaticField(Class<?> clazz,
String name,
Object value)
Wyszukuje i zmienia wartość klasycznego pola statycznego w obiekcie (najczęściej będzie to w pewnym sensie operacja niedozwolona ). |
|
static Class<?> |
unbox(Class<?> clazz)
|
|
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method Detail |
|---|
public static Class<?> forName(String className)
throws InspectException
className -
InspectException
SecurityExceptionpublic static Class<?> box(Class<?> clazz)
int
zamienia na Integer. W pozostałych przypadkach po prostu zwraca
przekazany argument bez żadnych zmian. W szczególności metoda może być
bezpiecznie wywoływana na rzecz wrapperów:
box(box(int.class));
clazz -
public static Class<?> unbox(Class<?> clazz)
public static boolean isPrimitive(Class<?> clazz)
int).
clazz -
public static boolean isBoxed(Class<?> clazz)
Integer).
clazz -
public static boolean isBool(Class<?> clazz)
boolean),
czy wrapper (np Boolean).
clazz -
public static boolean isNumber(Class<?> clazz)
float),
czy wrapper (np Double), czy Number.
clazz -
public static boolean isAssignableFrom(Class<?> ssuper,
Class<?> value)
Class.isAssignableFrom.
Uwzględnia autoboxing argumentów.
ssuper - value -
public static boolean isAssignableFrom(Class<?>[] supers,
Class<?>[] values)
Class.isAssignableFrom - sprawdza, czy odpowiednie
elementy z tablicy supers są assignable względem odpowiednich
elementów values, czyli czy for(i) supers[i].isAssignableFrom( values[i] )
Uwzględnia autoboxing argumentów.
supers - values -
public static boolean isInstance(Class<?> ssuper,
Object value)
value jest instancją klasy ssuper.
Uwzględnia autoboxing argumentów.
ssuper - value -
public static boolean isInstance(Class<?>[] supers,
Object[] values)
values są istancjami
odpowiednich klas z tablicy supers. Uwzględnia autoboxing argumentów.
supers - values -
public static Class<?> getClass(Object value)
public static Class<?>[] getClass(Object[] values)
Class.getClass.
Konwertuje tablicę obiektów na tablicę klas tych obiektów
T - values -
public static Method[] getDeepMethods(Class<?> clazz)
clazz -
public static Method findDeepMethod(Class<?> clazz,
String name)
clazz - name -
public static Method getDeepMethod(Class<?> clazz,
String name,
int count)
clazz - name - count -
public static Method getMethod(Class<?> clazz,
String name,
Class<?>... params)
throws InspectException
clazz - name - params - typy argumentów zadeklarowane identycznie jak w metodzie
InspectException
public static Method getMethod(Class<?> clazz,
String name,
int count)
clazz - name - count -
public static Method findMethod(Class<?> clazz,
String name)
clazz - name -
public static Method getDeclaredMethod(Class<?> clazz,
String name,
Class<?>... params)
throws InspectException
clazz - name - params - typy argumentów zadeklarowane identycznie jak w metodzie
InspectException
public static Method getDeclaredMethod(Class<?> clazz,
String name,
int count)
clazz - name - count -
public static Method findDeclaredMethod(Class<?> clazz,
String name)
clazz - name -
public static boolean hasMethod(Class<?> clazz,
String name,
Class<?>... params)
clazz - name - params - typy argumentów zadeklarowane identycznie jak w metodzie
public static boolean hasMethod(Class<?> clazz,
String name,
int count)
clazz - name - count -
public static boolean hasDeclaredMethod(Class<?> clazz,
String name,
Class<?>... params)
clazz - name - params - typy argumentów zadeklarowane identycznie jak w metodzie
public static boolean hasDeclaredMethod(Class<?> clazz,
String name,
int count)
clazz - name - count -
public static Method matchMethod(Class<?> clazz,
String name,
Object... values)
throws InspectException
Ponieważ na argumentcie values wymuszany jest autoboxing, niektóre
wywołania sa niejednoznaczne. W szczególności deklaracje rodzaju:
class A{
void method(int a);
void method(Integer a);
}
matchMethod(A.class, "method", 1);
matchMethod(A.class, "method", Integer.valueOf(2) );
W pierwszej instrukcji programista powinien oczekiwać wersji int,
w drugiej: Integer. Niestety, funkcja matchMethod dostaje
w obu przypadkach wartość już z'autoboxowaną: Integer - więc nie
jest w stanie tych wywołań odróżniać. W obu liniach zostanie wyrzucony wyjątek
- aby uruchomić kod, programista powinien usunąć jedną z metod.
clazz - name - values -
InspectException - jeśli nie znaleziono pasującej metody lub wystąpiła
niejednoznaczność
public static <T> Constructor<T> getConstructor(Class<T> clazz,
Class... args)
throws InspectException
T - clazz - args -
InspectException
public static <T> Constructor<T> getConstructor(Class<T> clazz,
int count)
throws InspectException
T - clazz - count -
InspectException
public static <T> boolean hasConstructor(Class<T> clazz,
Class... args)
throws InspectException
T - clazz - args -
InspectException
public static <T> boolean hasConstructor(Class<T> clazz,
int count)
throws InspectException
T - clazz - count -
InspectException
public static <T> Constructor<T> matchConstructor(Class<T> clazz,
Object... values)
throws InspectException
ObjectInspector.matchMethod(java.lang.Object, java.lang.String, java.lang.Object...) )
T - clazz - values -
InspectException
public static Object getStaticField(Class<?> clazz,
String name)
throws InspectException
clazz - name -
InspectException
public static void setStaticField(Class<?> clazz,
String name,
Object value)
throws InspectException
clazz - name - value -
InspectExceptionpublic static String getLocation(Class<?> clazz)
getFQLocation(java.lang.Class>)
clazz -
public static String getFQLocation(Class<?> clazz)
getLocation(java.lang.Class>)
clazz -
public static <T> List<Class<?>> getAncestors(T object)
Object, która jest ostatnim elementem listy.
T - object -
public static <T> List<Class<?>> getAncestors(T object,
Class<? super T> root)
root, która jest ostatnim elementem listy.
T - object - root -
public static List<Class<?>> getAncestors(Class<?> clazz)
Object, która jest ostatnim elementem listy.
clazz -
public static <T> List<Class<?>> getAncestors(Class<T> clazz,
Class<? super T> root)
root, która jest ostatnim elementem listy.
T - clazz - root -
public static <T> Iterable<Class<?>> getAncestorTree(Class<T> clazz)
clazzclazzclazz.superclazz.superclazz.super.superObject.class
T - clazz -
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||