2011-06-22 16 views
18

Bir oyun için kullanıyorum denetimlerin bilgilerini saklayan bir iç sınıfa sahibim, şimdi denetimlerin tüm isimlerini tutan bir statik ArrayList depolamak istiyorum . Ama bu hatayı alıyorum: Değiştirici statik yalnızca sabit değişken bildirimlerinde izin verilir

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); 
    } 
} 

Şimdi bu kolayca sınıfın dışına ArrayList alıp ana sınıfında saklayarak çözülebilir biliyorum "Düzenleyici statik sadece sabit değişken beyanlarında izin verilir". Ama tüm bilgileri her şeye erişebileceğim bir sınıfta tutmayı tercih ederim.

"Control.key, Control.trigger, Control.keys" "tuşuna, tetik, anahtarlar"

Belki de hemen sahip Obsesif-kompulsif bozukluk daha okunabilir/sadece daha şık olduğunu , yine de bunu kendi yolumu yapmak isterim.

+0

Eğer iç oluşturulan hakkında daha fazla bilgi vermek sınıf? – fmucar

cevap

30

Control sınıfını statik yapabilirsiniz.

private static class Control { 
     ^^^^^^ 

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

    ... 

Bu

iç sınıf statik olun Java Dil Şartnamede 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

açıklanan ve işe yarayacak:

private static class Control { ... 
İlgili konular