The compiler will provide an implicit narrowing cast for an assignment of a constant expression that will fit in the left-hand operand. This is not available for arguments of methods or constructors.
The available constructors for class Short require a short or a String.
With "new Short((byte)1)", the argument has been explicitly cast to a byte. Going from a byte to a short is a widening conversion, not a narrowing cast, and perfectly legal for an argument. [ January 18, 2005: Message edited by: Mike Gershman ]