我有这个简单的单身用于键盘轮询,它实现keyListener只是为了改变布尔的状态。我通过get getListener()获取keyListener对象。我不确定这是否可行,但代码是有效的。可能有更好的方法来完成这个?枚举单例实现keyListener
更新:更简单的方法使用的bitset
package Singleton;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.BitSet;
public enum bitKeyProcessor implements KeyListener{
INSTANCE;
private final BitSet bitset = new BitSet();
@Override
public void keyPressed(KeyEvent e) {
bitset.set(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
try{bitset.clear(e.getKeyCode());}
catch(Exception ex) {ex.printStackTrace();}
}
public void keyTyped(KeyEvent e) {};
public boolean isUp(){
if(bitset.get(KeyEvent.VK_UP))
return true;
return false;
}
....
public boolean isUpRight(){
if(isUp() && isRight())
return true;
return false;
}
那么代码看起来对我来说还不错,Joshua Bloch肯定会喜欢使用枚举来创建一个Singleton。 –
为什么???!带有实例字段的普通旧类有什么问题? (另外,我不认为在关键代码上有任何指定的有限范围。IIRC,Solaris上的数字键盘输入键用于给出相当高的值。 –