Por que a conversão de short to char é uma conversão restritiva?

Uma conversão de restrição é quando se coloca um tipo de dados que pode armazenar um valor maior em um tipo de dados que pode armazenar no máximo um valor menor.

long l = 4L;
int i = (int)l;

No entanto, não entendo por que um curto em um char é uma conversão restritiva, mas tenho a intuição de que está relacionado ao sinal / não assinado desses dois tipos de dados, mas não sei explicar o porquê.

short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535 

Parece que seria uma conversão ampliada ou, pelo menos, nem estreitando nem ampliando, pois ambos têm 16 bits e podem conter o mesmo número de valores.

    System.out.println((int)Character.MIN_VALUE); //0
    System.out.println((int)Character.MAX_VALUE); //65535 
    System.out.println(Short.MIN_VALUE); //-32768
    System.out.println(Short.MAX_VALUE); //32767
    //65535 = 32768+32767

questionAnswers(2)

yourAnswerToTheQuestion