Я узнал, что для доступа к статическому классу-члену синтаксис равен OuterClass.NestedStaticClass
.Доступ к статическому классу-члену
Для указанной ниже интерфейса Input
,
interface Input{
static class KeyEvent{
public static final int KEY_DOWN = 0;
public static final int KEY_UP = 0;
public int type;
public int keyCode;
public int keyChar;
}
static class TouchEvent{
public static final int TOUCH_DOWN = 0;
public static final int TOUCH_UP =0;
public static final int TOUCH_DRAGGED = 2;
public int type;
public int x, y;
public int pointer;
}
public boolean isKeyPressed(int keyCode);
.....
public List<KeyEvent> getKeyEvents();
public List<TouchEvent> getTouchEvents();
}
ниже является реализация Keyboard
,
class Keyboard implements Input{
....
@Override
public List<TouchEvent> getTouchEvents() {
TouchEvent obj1 = new TouchEvent();
TouchEvent obj2 = new TouchEvent();
List<TouchEvent> list = new ArrayList<TouchEvent>();
list.add(obj1);
list.add(obj2);
return list;
}
}
В этой реализации Keyboard
, я не требовал, чтобы использовать Input.TouchEvent
для ниже строк кода.
TouchEvent obj1 = new TouchEvent();
TouchEvent obj2 = new TouchEvent();
List<TouchEvent> list = new ArrayList<TouchEvent>();
Но ниже реализации, я должен был использовать Input.TouchEvent
,
public class NestedClassInInterface {
public static void main(String[] args) {
Input.TouchEvent t = new Input.TouchEvent();
}
}
Как это понимать?
Поскольку вы реализуете интерфейс 'input' в вашем предыдущем случае .. – Babel
Если вы реализуете интерфейс' Input', как различается область доступа к KeyEvent? – overexchange