Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda