Java 为什么要分配空值?
我一直在学习编程,在一些不同的课程中,他们说这就是如何声明一个空变量java和Kotlin,如果我没记错的话,python是一个none不完全相同的 但我读到或学到的每件事都说不要这样做。 为什么要这么做,或者有合法的用途 下文第1.0版 我对这个问题进行了一些编辑和回滚,因为在深入研究主题之后,none的行为与null非常相似Java 为什么要分配空值?,java,null,kotlin,Java,Null,Kotlin,我一直在学习编程,在一些不同的课程中,他们说这就是如何声明一个空变量java和Kotlin,如果我没记错的话,python是一个none不完全相同的 但我读到或学到的每件事都说不要这样做。 为什么要这么做,或者有合法的用途 下文第1.0版 我对这个问题进行了一些编辑和回滚,因为在深入研究主题之后,none的行为与null非常相似 不要改变我的问题,请评论我如何看待它,如何重新定义或提出更好的问题。对于在外部范围中声明变量,例如Java中未在声明时显式指定的任何对象字段,默认为空 另外,还取消了一
不要改变我的问题,请评论我如何看待它,如何重新定义或提出更好的问题。对于在外部范围中声明变量,例如Java中未在声明时显式指定的任何对象字段,默认为空 另外,还取消了一些允许垃圾收集的功能 建议避免空值,因为跟踪NPE错误是JVM开发中的一个大问题
就个人而言,我喜欢Try/Success或Option/Some/None的Scalas模型,除了Nil之外,null还有多种合法用法;虽然非法的也同样多,如果不是更多的话 作为一对突然浮现在脑海中的夫妻: 可选的依赖项。在下面的班级;如果施工时提供了非空通知程序;然后,当事情发生时,这是用来通知的。但是,如果没有可用的或必需的通知程序,该类仍然可以执行其doThing方法
class ThingDoer {
private final Notifier notifier;
ThingDoer(final Notifier notifier) {
this.notifier = notifier;
}
void doThing() {
// Doing some stuff.
if (this.notifier != null) {
this.notifier.notify("Did thing");
}
}
}
缓存是另一种情况,如果缓存值已经计算过,请使用缓存值,否则请从头开始查找-此处不考虑线程安全性。。。。同样的概念也适用于延迟加载的东西;您可以在第一次请求之前将该值保持为null,然后将其保持为可用,以避免在后续请求时重新计算该值
class CachedLookup {
private Result cachedResult = null;
Result getResult() {
if (this.cachedResult != null) {
return this.cachedResult;
}
this.cachedResult = this.getResultInternal();
return this.cachedResult;
}
private Result getResultInternal() {
// Whatever complex stuff here...
return new Result();
}
}
原因如果root==null{/*do cool stuff*/}。null是一种不给变量赋值的方法。它可以用于默认值,也可以用于缺少某些内容的情况。显然,处理可能为null的变量总是很危险的,因为它们不引用任何对象。我的意思是,如果你有一个像buyApple这样的方法,它应该退回一个苹果,如果超市已经关门了,没有苹果,你会怎么做?在这种特定情况下,您可以返回null,但可选的可能更好。显然,您的程序逻辑需要处理这种情况。如果你错过了,你会得到例外。