<div dir="ltr">Question on <a href="https://openjdk.org/jeps/8303099">https://openjdk.org/jeps/8303099</a> "JEP draft: Null-Restricted and Nullable Types (Preview)":<br><br>  Why is a narrowing conversion from X? to X! a compiler warning rather than compiler error?<br><br>I fully appreciate the need to avoid any sort of breaking errors when nullness is adapted on only one side of a two-party relationship. However, if a library goes out of its way to declare<br><br>  static void doSomething(String! foo) {...}<br><br>A caller shouldn't be allowed to explicitly contradict it with:<br><br>  String? x = ...<br>  YourClass.doSomething(x)<br><br>This is a clear clash of intents. If the caller didn't want to bother with nullness operators then they wouldn't have added them in the first place. Much more useful (for me anyway) for the compiler to stop the mistake immediately.<br><br>I've seen a few Valhalla youtube updates as well as Reddit threads including one where Brian Goetz suggested that would break source or binary compatibility, but I fail to see how breakage applies in this scenario. What am I missing?<br><br>Thanks in advance for any clarification.<br></div>