Scala调用BigQuery API获取表描述无值返回null的处理方法问询
问题1:未设置描述的表调用getDescription()是否会返回null
是的,当目标表没有配置描述信息时,该方法确实会返回null。
官方文档标注的返回string仅代表字段类型为字符串,客户端没有对未设置的字段做默认值兜底,未赋值的元数据字段都会直接返回null。
问题2:空指针风险规避方案
Scala生态下最推荐用Option类型处理,是最符合函数式习惯的无副作用方案:
方案1:Scala Option 包装(推荐)
直接用Option()包裹返回值,会自动把null转为None,非null值转为Some(值),你可以按需取默认值或做后续链式操作:
val bigquery = BigQueryOptions.getDefaultInstance().getService() // 连表存在性一起校验,避免getTable返回null引发的NPE val tableDescription = Option(bigquery.getTable(tableId)) .flatMap(table => Option(table.getDescription())) .getOrElse("") // 此处可自定义默认值,比如空字符串或者“无描述”
如果已经确认table对象一定非空,也可以简化为:
val tableDescription = Option(table.getDescription()).getOrElse("")
方案2:Java 工具类兜底(兼容Java风格写法)
如果你更习惯Java式的处理,可以用java.util.Objects的工具方法做非空兜底:
import java.util.Objects val tableDescription = Objects.toString(table.getDescription(), "")
内容的提问来源于stack exchange,提问作者Mee
相关产品推荐
相关产品推荐

