2015-10-08 51 views
2

我一直在使用Java Bigquery API來獲取我們的BigQuery作業的Billing Tier層。我想知道爲什麼API的設計是爲了在計費級別只能是1,2或3時返回BigDecimal。爲什麼不使用int

enter image description hereBigquery Java API返回Billing Tier作爲BigDecimal

+0

我不確定這裏可以給出什麼樣的答案....「因爲開發人員把它放在BigDecimal中」?也許起初它應該比1-2-3更多,他們從來沒有改變過它? – Patrice

回答

3

的BigDecimal的,你在這裏看到的是關於如何在Java客戶端從原始JSON響應轉換領域內實現細節。它使用鍵名稱的映射到「對象」值。

Java客戶端根據API定義here自動生成。我的猜測是,它將該值存儲爲BigDecimal,因爲如果基礎類型是無符號的64位值,則不能用java表示,因爲最高位將被解釋爲負值。因此它會考慮封面下方的所有數字字段BigDecimals

也就是說,當你真的去讀取值時,Java API得到該字段將返回Java Integer而不是BigDecimal。因此,就使用對象而言,數據的存儲方式應該沒有關係。

如果您下載客戶端庫here,您可以自己閱讀源代碼(解壓縮結果,並查看google-api-services-bigquery-v2-rev237-1.20.0-sources.jar)。