我尝试使用MapMaker / CacheBuilder进行缓存,但是我不了解如何正确处理空值。
ConcurrentMap<Key, Graph> graphs = new MapMaker()
.concurrencyLevel(4)
.weakKeys()
.maximumSize(10000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.makeComputingMap(
new Function<Key, Graph>() {
public Graph apply(Key key) {
return createExpensiveGraph(key);
}
});
如果方法createExpensiveGraph返回空值,则抛出NullpointerException。我不明白为什么ComputingConcurrentHashMap抛出NPE而不是仅返回空值。
如何正确处理呢?只是捕获NPE并返回null即可?我想念什么吗?
Guava试图强迫您避免使用null
任何可能的方法,因为在存在的情况下进行不正确或未记录的行为null
可能会导致大量的混乱和错误。我认为,尽可能避免使用null绝对是一个好主意,如果可以修改代码以使其不使用null
,我强烈建议您改用这种方法。
问题的答案主要取决于应用程序中“
null”值的实际含义。最有可能的是,这意味着此键“没有价值”,或“那里什么也没有”。在这种情况下,最好的选择是使用Optional
,使用Optional
.of
包装非null值,然后使用Optional.absent()
代替null
。如果必须将其转换为null或非null值,则可以使用Optional.orNull()
。
问题内容: 我有一段 一个如何在CSS中用空格表示id和class 当我使用 它不适用于以上的CSS。 问题答案: 实际上代表了两个不同的类 将不起作用,但您可能最终会获得实际的para编号
问题内容: 我正在尝试创建一个程序,该程序扫描文本文件并将参数传递给子进程。一切正常,直到我得到路径中带有空格的目录。 我的split方法分解了参数,使它们跳越了空格: 可以,要么我需要函数来解析正确的参数,要么我将整个字符串传递给子进程而无需先对其进行分解。 不过我有点迷路了。 问题答案: 使用列表代替: 如果您的文件包含整个命令,而不仅仅是路径,那么您可以尝试shlex.split():
在运行中,模板中的 空白 处理在某种程度上来说是纠缠所有模板引擎的一个问题。 我们来看这个模板。我已经用颜色标记了模板中的组件: 文本, 插值, FTL 标签.。 使用 [BR] 来想象 换行。 <p>List of users:[BR] <#assign users = [{"name":"Joe", "hidden":false},[BR] {
我引用了irbanana关于支持PostGIS的空间数据类型的回答。我正在使用MySQL,并试图为自定义数据类型实现EWKBGeomPoint。 我的Gorm模型: 据我所知,MySQL支持这样的插入: 或 如果我使用自己的来满足的界面: 包括在内的整个值在Gorm的单引号中引用,因此它不起作用: 我如何让它工作? 编辑1: 我追踪Gorm代码,最终得到了的函数。在它内部检查且为真,则它进入调用,
问题内容: 我有一个包含3列的表格:c1,c2和c3。我想编写一条select语句,以便如果c1和c2都为空,则显示c3,否则显示c1。 在上述情况下,编写select语句的最佳方法是什么? 问题答案: 使用案例 使用NVL2 或者 使用解码 易读性和易用性CASE胜出。
我无法让JsonDeserializer处理空值。我正在读取一个json文件,其中我的记录类型只有四个值:Case 1、Case 2、*或null。JsonDeserializer可以很好地处理前3个。但是,遇到null时它似乎什么也做不了。根据代码(请参阅下面我的自定义反序列化器),我希望该行 要么抛出一个异常(从而将text = "NULL "赋值)。或者,根据返回一个空字符串 同样,我在这里