Oracle Java Tutorial - возможная ошибка, связанная с автобоксом комментариев Java-комментария [дубликаты]

На этот вопрос уже есть ответ:

Делает ли автобокс вызов valueOf ()? 4 ответа

Я новичок в JAVA, в настоящее время изучаю раздел Обучающие материалы по Oracle. Я думаю, что там есть ошибка, и я хочу убедиться, что я не ошибаюсь. Я буду благодарен за ваш отзыв.

Я видел следующее объяснение наhttps: //docs.oracle.com/javase/tutorial/java/generics/restrictions.htm

Pair <Integer, Character> p = новая пара <> (8, 'a');

Обратите внимание, что компилятор Java автоматически вставляет 8 в Integer.valueOf (8) и 'a' to Character ('a'):

Pair <Integer, Character> p = новая пара <> (Integer.valueOf (8), новый символ ('а'));

Я думаю, что это ошибка, а 'a' автоматически помечается как Character.valueOf ( 'а').

Я написал следующую программу, чтобы проверить это. так как я думал, что у дженериков есть специальный бокс, я попробовал дженерик-метод, обычный метод и дженерик-класс:

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:

общее использование метода: значения: a a true first == second is true

first == секунда верна

регулярное использование метода: значения: a a true first == second is true

first == секунда верна

общее использование класса: значения: a a true first == second is true

first == секунда верна

Так что, я думаю, это показывает, что 'a' автоматически помещается в Character.valueOf.

Я что-то пропустил? Это правильный способ проверить эт

Благодарность

Элиягу

Ответы на вопрос(1)

Ваш ответ на вопрос