2014-03-04 43 views
0

我有以下的配置文件:Bukkit配置 - 得到小節和安全鑄造

arenas 
    arena1 
    info: infotest 
    info2: info2test 
    arena2 
    info: infotest 
    info2: info2test 

所以。現在我想得到一個舞臺,並將其轉換爲競技場對象,我有一個構造函數在那裏採取地圖。所以我做如下:

Arena a = new Arena((Map<String, Object>) getConfig().get("arenas.arena1")); 

這是工作。但是:即時消息得到以下警告在eclipse:

Type safety: Unchecked cast from Object to Map<String,Object> 

我不明白爲什麼這個apperas。但是我怎麼能改變獲取信息的方式來避免這種情況,所以要做一個「安全」的演員?

而我的第二個問題:現在我想從舞臺上獲得所有的子地圖。「」 並在插件加載時初始化它們。我怎樣才能得到他們所有的人?我找不到像arenas.getAll()這樣的東西,或者我不知道..這樣的東西..任何一個想法?

謝謝。

回答

1

對於第一個問題,您可以獲取配置節「arena1」,並將所有值作爲Map使用,無需任何警告。要做到這一點,使用:

config.getConfigurationSection("arenas.arena1").getValues(false); 

或者,你可以把@SupressWarnings("unchecked")在方法,其中您使用的代碼。既然你知道你得到的類型將是一個Map,那麼這個警告並沒有多大意義,儘管一些開發者可能會考慮這個不好的做法。

對於第二個問題,您可以使用類似的方法。 getValues()本質上是一個getAll()類型的方法,它獲取該部分中所有鍵和值的映射。所以你可以使用:

config.getConfigurationSection("arenas").getValues(false);