Jak sprawdzić, czy jedna klasa java rozszerza inną w czasie wykonywania?
Jak sprawdzić, czy a
jest podklasą b
?
Class<?> a = A.class;
Class<?> b = B.class;
117
3 answers
Szukasz:
Super.class.isAssignableFrom(Sub.class)
219
Author: meriton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 16:48:41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 16:48:41
Jeśli chcesz wiedzieć, czy Class
rozszerza inny, użyj klasy#isAssignableFrom(Class). Dla Twojego przykładu byłoby to:
if(B.class.isAssignableFrom(A.class)) { ... }
Jeśli interesuje Cię, czy dana instancja jest konkretnego typu, użyj instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
Zauważ, że zwrócą one true
, jeśli Klasa / instancja jest członkiem hierarchii typów i nie są ograniczone do bezpośrednich relacji klasy nadrzędnej/podrzędnej. Na przykład:
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
Jeśli chcesz sprawdzić bezpośrednie relacje klasy superklasowej /podklasowej, Tim również udzielił odpowiedzi .
79
Author: Rob Hruska,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:22
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:22
Chcesz wiedzieć, czy b
można przypisać od a
:
b.isAssignableFrom(a);
Dodatkowo, jeśli chcesz wiedzieć, że a
jest bezpośrednią podklasą b
:
a.getSuperclass().equals(b);
39
Author: Tim Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 16:50:03
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 16:50:03