this is explicit too, cause you tell the compiler you are going to assign a value to a Short.
Here, withouth the cast, the compiler would assume your giving an integer as parameter to the method,
so again, you have to tell him its a Short.
Its allowed. because s assigned to a value which is compile time constant , so compiler will perform narrowing conversion.
for instance, try this int i = 10;short s = i;
and regarding method invocation conversion read below paragraph from JLS:
Method invocation conversions specifically do not include the implicit narrowing of integer constants which is part of assignment conversion (§5.2). The designers of the Java programming language felt that including these implicit narrowing conversions would add additional complexity to the overloaded method matching resolution process (§15.12.2).