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

208
Vistas
Is it possible to inject a method in built-in class in Java?

In JavaScript it is easy to modify (or even replace entirely) built-in classes. One could simply write a name of a method and inject it into built-in class in JavaScript simply by typing = and defining a function. Then this method can be used on every instance of that class.

For example, I injected a method multiply into String JavaScript built-in class which multiplies string which string object contains given number of times.

Can I do something similar in Java?

I know that I can extend some built-in class and in my custom class define this method. But, is it possible to inject a method in a built-in Java class like in JavaScript so that everywhere where that class is used in the program this custom method is available?

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

0

This is possible to do during runtime. But the simple answer is that you do not want to do that. Bytecode modification is extremely fragile and complex. Let alone that your code also won't compile if you directly call the new method you have injected, meaning you have to resort to expensive methods such as Reflection.

Your best alternative would be to make a utility class for Strings that has this multiply method. Something like this:

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

For non-final classes (so, not the String class), you can also choose to extend the class and add your methods to the newly created class:

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

This will require you to replace all types of type Type with MyType

I do not fully understand your example, but it sounds like String#repeat(int) might do the same as what you are trying to achieve.

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