Вот короткая демонстрация того, что унарный плюс сделает с символьной переменной:
private static void method(int i){
System.out.println("int: " + i);
}
private static void method(char c){
System.out.println("char: " + c);
}
public static void main(String[] args) {
Character ch = 'X';
method(ch);
method(+ch);
}
Результат запуска этой программы:
char: X
int: 88
Как это работает: Unary + или - распаковать их операнд, если это объект-оболочка, а затем преобразовать их операнд в int, если он еще не является int или более широким. Итак, как мы видим, в то время как первый вызов method
выберет перегрузку char
(только распаковка), второй вызов выберет версию int
method
. Переменная ch
типа Character
будет передана в method
в качестве аргумента int
из-за примененного унарного плюс .