জাভাতে, এনাম ধরণের স্ট্যাটিকের ভিতরে রয়েছে?


123

আমি কোনও এনামের অভ্যন্তর থেকে আশেপাশের শ্রেণির সদস্যদের অ্যাক্সেস করতে পারছি না, যেমন আমি কোনও অভ্যন্তর শ্রেণীর অভ্যন্তরীণ থেকে could এর মানে কি এনামগুলি স্থির? আশেপাশের শ্রেণীর উদাহরণের সুযোগের কোনও অ্যাক্সেস আছে কি, বা এনামের যে পদ্ধতিটি আমার প্রয়োজন সেখানে আমার সেই উদাহরণটি পাস করতে হবে?

public class Universe {
    public final int theAnswer;

    public enum Planet {
        // ...
        EARTH(...);
        // ...

        // ... constructor etc.

        public int deepThought() {
            // -> "No enclosing instance of type 'Universe' is accessible in this scope"
            return Universe.this.theAnswer;
        }
    }

    public Universe(int locallyUniversalAnswer) {
        this.theAnswer = locallyUniversalAnswer;
    }
}

আমি নিশ্চিত নই যে আপনি কী বর্ণনা করার চেষ্টা করছেন তা আমি পুরোপুরি বুঝতে পেরেছি। আপনি একটি ছোট কোড নমুনা দিতে পারেন?
পিট

উত্তর:


176

হ্যাঁ, নেস্টেড এনামগুলি সুস্পষ্টভাবে স্থির।

থেকে ভাষা স্পেসিফিকেশন অধ্যায় 8.9 :

নেস্টেড এনাম প্রকারগুলি স্পষ্টতই স্থির are স্থায়ী হিসাবে কোনও নেস্টেড এনাম টাইপটি স্পষ্টভাবে ঘোষণা করা অনুমোদিত।


45

উদাহরণস্বরূপ (অ স্থিতিশীল) অভ্যন্তরীণ এনাম শ্রেণি তৈরি করা কোনও অর্থবোধ করবে না - যদি এনাম উদাহরণগুলি নিজেরাই বাইরের শ্রেণীর সাথে আবদ্ধ থাকে তবে তারা এনামের গ্যারান্টি ভঙ্গ করত -

যেমন আপনি যদি

public class Foo {
   private enum Bar {
        A, B, C;
   } 
}

এনাম মানগুলি স্থির হিসাবে যথাযথভাবে কাজ করার জন্য, (অ্যাক্সেস সীমাবদ্ধতা উপেক্ষা করে স্যুইচোকড)

Bar b1 = new Foo().A
Bar b2 = new Foo().A

b1 এবং b2 একই জিনিস হতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.