Supongamos que tengo un archivo .class, ¿puedo obtener todos los métodos incluidos en esa clase?¿Puedo obtener todos los métodos de una clase?
34
A
Respuesta
23
saber acerca de todos los métodos utilizan esta declaración en la consola:
javap java.packagename.classname
Ejemplo: javap java.lang.StringBuffer
49
Directamente desde la fuente: http://java.sun.com/developer/technicalArticles/ALT/Reflection/ Luego lo modifiqué para que fuera autónomo, sin requerir nada desde la línea de comandos. ;-)
import java.lang.reflect.*;
/**
Compile with this:
C:\Documents and Settings\glow\My Documents\j>javac DumpMethods.java
Run like this, and results follow
C:\Documents and Settings\glow\My Documents\j>java DumpMethods
public void DumpMethods.foo()
public int DumpMethods.bar()
public java.lang.String DumpMethods.baz()
public static void DumpMethods.main(java.lang.String[])
*/
public class DumpMethods {
public void foo() { }
public int bar() { return 12; }
public String baz() { return ""; }
public static void main(String args[])
{
try {
Class c = DumpMethods.class;
Method[] m = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}
5
Puede utilizar el Reflection API
5
public static Method[] getAccessibleMethods(Class clazz) {
List<Method> result = new ArrayList<Method>();
while (clazz != null) {
for (Method method : clazz.getDeclaredMethods()) {
int modifiers = method.getModifiers();
if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) {
result.add(method);
}
}
clazz = clazz.getSuperclass();
}
return result.toArray(new Method[result.size()]);
}
Cuestiones relacionadas
- 1. ¿Cómo puedo obtener todos los métodos en un protocolo?
- 2. Clase abstracta con todos los métodos concretos
- 3. ¿Cómo repito todos los métodos de una clase en Perl?
- 4. ¿Cómo dividir todos los métodos de una clase en GDB?
- 5. Obtener solo los métodos declarados de una clase en PHP
- 6. obtener todos los métodos de una clase o instancia objetivo-c?
- 7. Listar todos los métodos de una clase dada, excluyendo los métodos de la clase padre en PHP
- 8. cómo mantener todos los métodos en una clase con ProGuard
- 9. En .NET, ¿puedes usar el reflejo para obtener todos los métodos no heredados de una clase?
- 10. java: obtener todos los nombres de variables en una clase
- 11. registrar todos los métodos?
- 12. ¿Cómo puedo averiguar todos los métodos definidos para una clase en R?
- 13. ¿Alguna forma de obtener todos los id (atributos) de todos los elementos de una clase concreta?
- 14. Poner todos los métodos en la definición de clase
- 15. Obtener todos los métodos de instancia de un objeto CoffeeScript
- 16. Obtener métodos de clase utilizando la reflexión
- 17. puedo tener RSpec sin una clase para los métodos
- 18. ¿Todos los métodos en la clase principal deben ser estáticos?
- 19. Redefina los métodos de clase o clase
- 20. Obtener todos los identificadores de una colección
- 21. ¿Cómo puedo encontrar todos los métodos de extensión en solución?
- 22. ¿Puedo usar métodos de una clase sin instanciar esta clase?
- 23. copie todos los nombres de métodos - Intellij
- 24. ¿Todos los métodos devuelven `this` a monad?
- 25. ¿Cómo colapsar todos los métodos en XCode?
- 26. ¿Imprimir todos los nombres de métodos de una clase en Ruby?
- 27. Obtener todos los __slots__ de la clase derivada
- 28. ¿Cómo puedo redefinir los métodos de clase Perl?
- 29. Agregue un punto de interrupción de método a todos los métodos de una clase en EclipseIDE
- 30. ¿Cómo obtener todos los elementos por nombre de clase?
Por lo tanto, Reemplazo 'Clase' con mi nombre de clase? –
Lo usaría desde la línea de comando 'java DumpMethods com.mypackage.MyClass' – corsiKa
También podría reemplazar' args [0] 'con' "com.mypackage.MyClass" '. Si usa el paquete predeterminado, simplemente puede usar '" MyClass "'. – corsiKa