2014-02-16 18 views
0

我下面的教程和我遇到這些指令:Java map.get(map.put(String,boolean)),它的含義是什麼?

public class WorldController { 
    enum Keys { 
     LEFT, 
     RIGHT, 
     JUMP, 
     FIRE 
    } 

    private World world; 

    static Map<Keys, Boolean> keys = new HashMap<Keys, Boolean>(); 
    static { 
     keys.put(Keys.LEFT, false); 
     keys.put(Keys.RIGHT, false); 
     keys.put(Keys.JUMP, false); 
     keys.put(Keys.FIRE, false); 
    }; 

    public WorldController(World world) { 
     this.world = world; 
    } 

    // ** Key presses and touches **************** // 
    public void leftPressed() { 
     keys.get(keys.put(Keys.LEFT, true)); 
    } 
    public void rightPressed() { 
     keys.get(keys.put(Keys.RIGHT, true)); 
    } 
    public void jumpPressed() { 
     keys.get(keys.put(Keys.JUMP, true)); 
    } 
    public void firePressed() { 
     keys.get(keys.put(Keys.FIRE, false)); 
    } 

    public void leftReleased() { 
     keys.get(keys.put(Keys.LEFT, false)); 
    } 
    public void rightReleased() { 
     keys.get(keys.put(Keys.RIGHT, false)); 
    } 
    public void jumpReleased() { 
     keys.get(keys.put(Keys.JUMP, false)); 
    } 
    public void fireReleased() { 
     keys.get(keys.put(Keys.FIRE, false)); 
    } 
} 

正如我所看到的方法leftPressed()rightPressed(),等返回任何結果。爲什麼它放置並立即獲得價值(沒有返回它)有什麼特別的理由?

+0

不,這不會特別做任何事情。 –

+0

你的函數的類型是'void'你期望它返回什麼 – meda

+0

我想了解爲什麼那個代碼的作者寫了這些指令,我什麼都不需要 – Massimo

回答

1

如果你看到地圖類的

V put(K key, V value); 

方法的文檔,它說的返回值表示是否有鍵的映射關係與關鍵,或空關聯的先前值。

因此,當你執行說

public void methodAtrue() { 
    myMap.get(myMap.put("A", true)); 
} 

你知道你的關鍵「A」的值設置爲true。此功能也將返回與鍵「A」相關的先前值。並且你正在執行get()關於我們返回的值boolean(如果put之前沒有映射存在,則返回null)。

既然你有地圖作爲

Map<Keys, Boolean> keys = new HashMap<Keys, Boolean>(); 

不能使用get(Boolean)。您需要使用get(Keys)

+0

我不是那個代碼的作者,我只想知道如果該代碼有意義(如果它有一個,它的意義是什麼) – Massimo

+0

不,它沒有任何意義,因爲它是不正確的。它甚至不會編譯。正如我所說你不能使用'get(布爾)'。你需要使用'get(Keys)'。 –

+3

它編譯(get方法想要一個Object,不一定是Keys) – Massimo

0

本教程可能打算返回所有這些get方法,因爲它們在當前狀態下不執行任何操作。

或者,作者正在演示地圖的get方法是如何工作的,並且只是簡單地顯示他們將不返回任何內容而返回的內容。

相關問題