我正在读一本关于Android游戏开发的书,而且我遇到了第一批代码:
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;
}
我的理解是,任何静态意味着只能有一个实例。
如果KeyEvent
只有type
的一个实例,为什么keyCode
,keyChar
和{{1}}也未声明为静态?
答案 0 :(得分:4)
只有嵌套类可以声明为static
;不是外/正常的。它允许您使用静态内部类而无需实例化外部类。
答案 1 :(得分:2)
您的代码是nested class
。 static
修饰符在这里意味着可以在不创建外部类对象的情况下访问此类。
假设外部类名为OuterClass
,您可以调用:
KeyEvent ke = new OuterClass.KeyEvent();
答案 2 :(得分:0)
static
不真正意味着“只能有一个实例”。
如果在 类中的任何声明中使用static关键字,static
表示“我在此声明的内容不是封闭类的实例的成员,但它是
话虽如此,如果您将嵌套类(类中的类)声明为静态,则意味着嵌套类声明不依赖于封闭类的实例,并且可以直接实例化。