Estoy intentado a través de las clases en un archivo Jar y deseo encontrar aquellas que no son abstractas. Puedo resolver esto instanciando las clases y atrapando InstantiationException, pero eso tiene un impacto en el rendimiento, ya que algunas clases tienen un arranque complicado. No puedo encontrar nada obviamente como isAbstract() en los documentos de Class.java.¿Cómo puedo determinar si una clase Java es abstracta por reflexión?
152
A
Respuesta
261
Tendrá resumen como uno de sus modificadores cuando llame a getModifiers() en el objeto de la clase.
Este link debería ayudar.
Modifier.isAbstract(someClass.getModifiers());
también:
http://java.sun.com/javase/6/docs/api/java/lang/reflect/Modifier.html
http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getModifiers()
28
Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
+0
Además, lo que dice. :) – Stobor
0
public static boolean isInstantiable(Class<?> clz) {
if(clz.isPrimitive() || Modifier.isAbstract(clz.getModifiers()) ||clz.isInterface() || clz.isArray() || String.class.getName().equals(clz.getName()) || Integer.class.getName().equals(clz.getName())){
return false;
}
return true;
}
+0
si es una interfaz y el nombre de clase es java.util.List es posible que usted cree ArrayList –
Cuestiones relacionadas
- 1. Django: cómo determinar si la clase de modelo es abstracta
- 2. ¿Cómo saber si una clase de Java es abstracta?
- 3. ¿Cómo puedo implementar una clase singleton abstracta en Java?
- 4. ¿Cómo usar la reflexión para determinar si una clase es interna?
- 5. Cómo determinar por reflexión si un Método devuelve 'nulo'
- 6. ¿Cómo puedo determinar si una clase amplía otra clase en Java?
- 7. Determinar si una propiedad es un tipo de matriz por reflexión
- 8. ¿Es una interfaz de Java una clase abstracta?
- 9. ¿Cómo determinar si un personaje es una letra en Java?
- 10. ¿Cómo determinar programáticamente si la clase es una clase de caso o una clase simple?
- 11. ¿Cómo determinar si una clase es una subclase de otra clase?
- 12. ¿Cómo puedo determinar si una URL redirige?
- 13. Cómo y cuándo usar una clase abstracta
- 14. Cómo determinar rápidamente si un método se reemplaza en Java
- 15. ¿Cómo comprobar si una clase Delphi se declara abstracta?
- 16. ¿Cómo implementar una clase abstracta en ruby?
- 17. ¿Cómo determinar si una secuencia es bitónica?
- 18. Comprueba si una clase es una subclase de otra clase en Java
- 19. ¿Cómo puedo saber genéricamente si una clase Java es un tipo primitivo?
- 20. ¿Cómo puedo determinar si un paquete es RTP/RTCP?
- 21. cómo determinar si una imagen es explícita
- 22. ¿Cómo determinar si Type es una estructura?
- 23. ¿Cómo puedo determinar los tipos de propiedad usando reflexión?
- 24. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 25. ¿Cómo puedo determinar si un objeto Delphi es de una clase específica y no de una clase descendiente?
- 26. Determinar si una clase implementa una interfaz muy específica
- 27. php clase abstracta extendiendo otra clase abstracta
- 28. ¿Cómo implementar una clase abstracta en F #?
- 29. C# Interfaz implementada por clase abstracta vacía
- 30. ¿Cómo puedo determinar si la instancia de clase del modelo de Django es una subclase de otro modelo?
Gracias! Una pequeña nota: No puedes usar "clase" como nombre de variable, quizás quieras cambiar tu ejemplo. –