Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
¿Es posible inyectar un método en una clase integrada en Java?

En JavaScript, es fácil modificar (o incluso reemplazar por completo) las clases integradas. Uno podría simplemente escribir el nombre de un método e inyectarlo en una clase integrada en JavaScript simplemente escribiendo = y definiendo una función. Entonces este método se puede usar en cada instancia de esa clase.

Por ejemplo, inyecté un método de multiply en la clase integrada String JavaScript que multiplica la cadena que contiene el objeto de cadena un número determinado de veces.

¿Puedo hacer algo similar en Java?

Sé que puedo extender alguna clase integrada y en mi clase personalizada definir este método. Pero, ¿es posible inyectar un método en una clase Java integrada como en JavaScript para que en todas partes donde se use esa clase en el programa esté disponible este método personalizado?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto es posible hacerlo durante el tiempo de ejecución. Pero la respuesta simple es que no quieres hacer eso. La modificación del código de bytes es extremadamente frágil y compleja. Y mucho menos que su código tampoco se compilará si llama directamente al nuevo método que ha inyectado, lo que significa que debe recurrir a métodos costosos como Reflection.

Su mejor alternativa sería crear una clase de utilidad para Strings que tenga este método de multiplicación. Algo como esto:

 public class StringUtil { public static String multiply(String s1, int i) { ... } }

Para las clases no finales (por lo tanto, no la clase String), también puede optar por extender la clase y agregar sus métodos a la clase recién creada:

 public class MyType extends Type { public static SomeType someMethod() { ... } }

Esto requerirá que reemplace todos los tipos de tipo Type con MyType

No entiendo completamente su ejemplo, pero parece que String#repeat(int) podría hacer lo mismo que está tratando de lograr.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda