Я искал начальную версию Android-игр 2nd Edition и наткнулся на какой-то код, который я не понимаю. В листинге 3-1 есть интерфейс определяется какИнтерфейсы с Android
залежиpublic interface Input
{
public static class KeyEvent
{
public static final int KEY_DOWN = 0;
public static final int KEY_UP = 1;
public int type;
public int keyCode;
public char keyChar;
}
public static class TouchEvent
{
public static final int TOUCH_DOWN = 0;
public static final int TOUCH_UP = 1;
public static final int TOUCH_DRAGGED = 2;
public int type;
public int x, y;
public int pointer;
}
public boolean isKeyPressed(int keyCode);
public boolean isTouchDown(int pointer);
public int getTouchX(int pointer);
public int getTouchY(int pointer);
public float getAccelX();
public float getAccelY();
public float getAccelZ();
public List<KeyEvent> getKeyEvents();
public List<TouchEvent> getTouchEvents();
}
То, что я не понимаю, что я думал, что Java не позволяет интерфейсам иметь поля. Разве это отличается от того, что Android запускает Java?
Поля не находятся непосредственно в интерфейсе; они находятся в вложенных статических классах внутри интерфейса. Интерфейсы допускают вложенные статические классы, а классы - поля. –