Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!