Можно ли умножить строку 10 на число 10? - PullRequest
0 голосов
/ 17 апреля 2019

Умножение '10' * 10 дает некоторое выходное значение 10101010101010101010

Кто-нибудь может это оправдать?

ExpressionParser parser = new SpelExpressionParser();
System.out.println(parser.parseExpression("'10' * 10").getValue());

Выход: 10101010101010101010

1 Ответ

1 голос
/ 17 апреля 2019

Это должно вызвать какое-то исключение, так как в Java мы не можем умножить строку на число.

SpEL - это не Java , но имеет некоторые сходства, но не Java .У него нет лямбда-выражений, он имеет разный синтаксис для многих вещей.

Оператор умножения, применяемый к строке, означает конкатенацию строки такое количество раз.

Подобно '10' + '10' = '1010', '10' * 2 = '1010'.

Javadoc в классе OpMultiply:

/**
 * Implements the {@code multiply} operator directly here for certain types
 * of supported operands and otherwise delegates to any registered overloader
 * for types not supported here.
 * <p>Supported operand types:
 * <ul>
 * <li>numbers
 * <li>String and int ('abc' * 2 == 'abcabc')
 * </ul>
 */
...