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?
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.