Consegui obter uma sobreposição de operador para minha classe, mas não consigo para String de forma alguma. Por que?
static void main(String[] args) {
String.metaClass.plus = {
r -> return "-";
}
print "left" + "right"
}
//I tried and so:
static void main(String[] args) {
String.metaClass.plus = {
r -> return "-".toString();
}
print "left".toString() + "right".toString()
}
Exemplo do compilador on-line Groovy
Atualizar.
Consegui alcançar o resultado desejado. Acabei de adicionar o tipo String ao parâmetro de função anônima.
//Old - non-working version.
String.metaClass.plus = {
r -> "-";
}
//New - working version.
String.metaClass.plus = {
String r -> "-";
}
A questão continua a mesma, por que a versão antiga não funcionou e a nova funciona? Na aula que estou assistindo, tudo funciona bem, o ChatGPT também disse que tudo deve funcionar.