2011-06-22 12 views
18

Mam wewnętrzną klasę, która przechowuje informacje o kontrolkach, których używam w grze, teraz chcę przechowywać statyczną tablicę ArrayList zawierającą wszystkie nazwy kontrolek . Ale ja dostaję ten błąd: „Modyfikator static jest dozwolone tylko w stałych deklaracji zmiennych”Modyfikator statyczny jest dozwolony tylko w stałych deklaracjach zmiennych

private class Control{ 
    public ArrayList<String> keys = new ArrayList<String>(); 
    public final String key; 
    public final Trigger trigger; 
    Control(String k, Trigger t){ 
     key = k; 
     trigger = t; 

     keys.add(key); 
    } 
} 

Teraz wiem, że to może być łatwo rozwiązany poprzez ArrayList z klasą i przechowywanie go w głównej klasie. Ale wolałbym zachować wszystkie informacje w jednej klasie, gdzie mogę uzyskać dostęp do wszystkiego.

"Control.key, Control.trigger, Control.keys" jest tylko bardziej elegancki/czytelny niż "klucz, spust, klucze"

A może po prostu mam zaburzenie obsesyjno-kompulsyjne , nadal chciałbym to zrobić po swojemu.

+0

dać więcej informacji o tym, jak stworzył wewnętrzny klasa? – fmucar

Odpowiedz

30

Możesz ustawić klasę Control.

private static class Control { 
     ^^^^^^ 

    // Ok to have static members: 
    public static ArrayList<String> keys = new ArrayList<String>(); 

    ... 

Jest to opisane w Java Language Specification Section §8.1.3

8.1.3 Inner Classes and Enclosing Instances

An inner class is a nested class that is not explicitly or implicitly declared static. Inner classes may not declare static initializers (§8.7) or member interfaces. Inner classes may not declare static members, unless they are compile-time constant fields (§15.28).

8

Sprawdź swój wewnętrzny klasa statyczna i będzie działać:

private static class Control { ... 
Powiązane problemy