2011-06-22 14 views
18

मेरे पास एक आंतरिक कक्षा है जो एक गेम के लिए उपयोग किए जा रहे नियंत्रणों की जानकारी संग्रहीत करती है, अब मैं उसमें एक स्थिर ऐरेलिस्ट स्टोर करना चाहता हूं जिसमें नियंत्रण के सभी नाम हैं । लेकिन मैं इस त्रुटि हो रही है:संशोधक स्थैतिक केवल स्थिर परिवर्तनीय घोषणाओं में ही अनुमति दी जाती है

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

अब मुझे पता है यह आसानी से कक्षा से बाहर ArrayList ले रहे हैं और मुख्य वर्ग में संग्रहीत करके हल किया जा सकता "संशोधक स्थिर केवल स्थिर चर घोषणाओं में अनुमति दी है"। लेकिन मैं सभी सूचनाओं को एक कक्षा में रखना पसंद करूंगा जहां मैं सबकुछ एक्सेस कर सकता हूं।

"Control.key, Control.trigger, Control.keys" बस और अधिक सुरुचिपूर्ण/से "कुंजी, ट्रिगर, कुंजी"

या हो सकता है मैं तो बस है जुनूनी बाध्यकारी विकार पढ़ी जा सकती है , फिर भी मैं इसे अपना रास्ता बनाना चाहता हूं।

+0

के बारे में कैसे आप भीतरी बनाया और अधिक जानकारी देने के कक्षा? – fmucar

उत्तर

30

आप Control कक्षा स्थिर बना सकते हैं।

private static class Control { 
     ^^^^^^ 

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

    ... 

यह जावा भाषा विशिष्टता 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

में वर्णन किया गया अपने भीतर वर्ग स्थिर बनाने और यह काम करेगा:

private static class Control { ... 
संबंधित मुद्दे

 संबंधित मुद्दे