Tutorial do java Oracle - possível erro em relação ao comentário automático de java do personagem [duplicado]

Esta pergunta já tem uma resposta aqui:

A chamada de caixa automática valueOf ()? 4 respostas

Eu sou novo no JAVA, atualmente aprendendo a seção de genéricos de tutoriais da Oracle. Acho que há um erro lá e quero ter certeza de que não estou errado. Agradeço seu feedback.

Vi a seguinte explicação emhttps: //docs.oracle.com/javase/tutorial/java/generics/restrictions.htm

Pair <Número inteiro, caractere> p = new Pair <> (8, 'a');

Observe que o compilador Java autoboxes 8 a Integer.valueOf (8) e 'a' para Personagem ('a'):

Pair <Inteiro, Caractere> p = novo Par <> (Integer.valueOf (8),novo caractere ('a'));

Acho que isso é um erro e 'a' é na verdade uma caixa automática para Character.valueOf ('a').

Eu escrevi o seguinte programa para verificá-lo. como pensei que talvez os genéricos tenham boxe especial, tentei o método genérico, o método regular e a classe genérica:

class TestCharacter<T>{
public <T> void check( T first, T second){
    System.out.println("values: " + first + "  " + second);
    System.out.println(first.equals(second));
    System.out.println( "first == second is " + (first == second) );
    System.out.println( "first == second is " + (first == Character.valueOf('a')) );
}
}

public class TestAutoBoxingIssue{

public static <T> void check1( T first, T second){
    System.out.println("values: " + first + "  " + second);
    System.out.println(first.equals(second));
    System.out.println( "first == second is " + (first == second) );
    System.out.println( "first == second is " + (first == Character.valueOf('a')) );
}
public static void check2( Character first, Character second){
    System.out.println("values: " + first + "  " + second);
    System.out.println(first.equals(second));
    System.out.println( "first == second is " + (first == second) );
    System.out.println( "first == second is " + (first == Character.valueOf('a')) );
}
public static void main(String[] args){
    char first = 'a';
    char second = 'a';
    System.out.println("generic method usage: ");
    check1( first, second );
    System.out.println("=============");

    System.out.println("regular method usage: ");
    check2( first, second );
    System.out.println("=============");

    TestCharacter<Character> t = new TestCharacter<>();
    System.out.println("generic class usage: ");
    t.check(first, second );
    System.out.println("=============");
}

}

output é:

uso do método genérico: valores: um verdadeiro primeiro == segundo é verdadeiro

first == segundo é verdadeiro

uso do método regular: valores: um verdadeiro primeiro == segundo é verdadeiro

first == segundo é verdadeiro

uso de classe genérica: valores: um verdadeiro primeiro == segundo é verdadeiro

first == segundo é verdadeiro

Então, acho que isso demonstra que 'a' é autoboxed para Character.valueOf.

Estou esquecendo de algo? Essa é a maneira correta de verificar?

Obrigado

Eliyahu

questionAnswers(1)

yourAnswerToTheQuestion