Pregunta

¡Hola queridos miembros de SOF!

¿Qué estoy buscando?He estado buscando y buscando en la Web cómo puedo implementar/inyectar interfaz en la clase (que se ha compilado, por supuesto) y agregar los métodos requeridos por las interfaces de la clase. También he estado tratando de aprender BCEL y ASM tanto como puedo, pero tengo poco recursos (incluso con mi querido amigo Google), ¡así que espero poder encontrar ayuda aquí! ¡No espero que me alimentes con una cuchara ni nada, pero necesito algunas direcciones! :) Conozco a ese gran libro en el sitio ASM y tutoriales bastante sobre todo sobre ellos, pero no puedo entender cómo podría agregar interfaz/métodos como dije antes.¿Qué he probado?Encontré este enlace aquí Pero no funcionó como esperaba ... Sé exactamente lo que quiero hacer, pero no sé cómo puedo lograrlo ... ¡Ejemplo de aquí!

public class Cat {
 public int age;
}

public interface Animal {
 public int getAge();
}

La implementación de aquí de este método:

public int getAge(){
 return age;
}

Así que queridos miembros de SOF, ¿cómo funcionaría esto?

¿Fue útil?

Solución

He tenido algo de experiencia con BCEL, lo que desea es comenzar con un cargador de clase personalizado que detecte qué clases desea redefinir; Para cada una clase, obtenga el objeto BCEL Javaclass (use FE el ClassLoadRepository), luego modifique esa clase a su gusto. Cuando haya terminado, obtenga el ClassFile del Javaclass y use ClassLoader#definirlass para pasarlo al JVM para la definición.

Ahora, para implementar los métodos reales, sugeriría escribir una clase de prueba que contenga su código, luego ejecute Bcelifier en el archivo de clase resultante, que imprimirá el código fuente Java BCEL requerido para generar ese archivo de clase. Inspeccionarlo y copiar pete a su gusto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top