我正在学习教程,并且我遇到了这些说明:
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 :(得分:1)
如果您看到
的文档V put(K key, V value);
Map类的方法,它表示返回值表示与key关联的先前值,如果没有键映射,则返回null。
所以当你执行say
时public void methodAtrue() {
myMap.get(myMap.put("A", true));
}
您知道您将键“A”的值设置为true。此函数还将返回与键“A”关联的先前值。并且您正在对我们get()
的返回值执行boolean
(如果在放置之前没有映射,则为null)。
因为你有Map as
Map<Keys, Boolean> keys = new HashMap<Keys, Boolean>();
您无法使用get(Boolean)
。您需要使用get(Keys)
。
答案 1 :(得分:0)
本教程可能会返回所有这些get方法,因为它们在当前状态下不执行任何操作。
或者,作者正在演示地图的get方法是如何工作的,并且只是显示他们将返回的内容而不对其进行任何操作。