技术上,引用是可以为空的。即使您可以
final用来确保编译器不会留下变量
null,也可以使用反射来删除其终结性并将其设置为null。
如果您不考虑反射,那么可以说是本机代码
Unsafe或字节码检测等等。最后,内部表示形式允许空值,因此,
null如果您 确实
愿意,则可以根据您要走的距离而定,除非您对允许/可能的条件进行了限制,例如是否
SecurityManager为参与。
如果您因为担心变量不够安全而提出问题
NullPointerExceptions,则使用
final,
Objects.requireNonNull()而良好的设计就足够了。



