Java Static Inner Class <Br /> Определение внутреннего класса как статического класса в основном то же самое, что определение других классов в качестве статических классов, а правила ссылки в основном одинаковы. Тем не менее, детали все еще очень разные. В частности, в основном есть следующие области, чтобы привлечь внимание всех разработчиков программ.
(1) Вообще говоря, если внутренний класс не определяется как статический внутренний класс, то его нельзя определить как статическая переменная -члена и метод статического элемента при определении переменных членов или методов члена. То есть статические члены не могут быть объявлены в нестатических внутренних классах.
(Ii) Как правило, нестатические внешние классы могут получить доступ к переменным членам и методам их внешних классов по желанию (включая методы, объявленные частными). ограничения. Статический внутренний класс не может получить доступ к нестатическим переменным членам и методам его внешнего класса.
(3) При создании нестатического внутреннего класса члена в классе существует обязательное положение, то есть случаи внутренних классов должны быть связаны с экземплярами внешних классов. Затем вам нужно определить статический внутренний класс во внешнем классе, и вам не нужно использовать новое ключевое слово для создания экземпляра внутреннего класса. То есть при создании внутреннего объекта статического класса объекты его внешнего класса не нужны.
Java использует следующий внутренний класс при реализации LinkedList:
Общедоступный класс LinkedList <e> расширяет AbstractSectientiallist <e> List <e>, Deque <e>, Clonable, Java.io.serializable {............ частный статический класс en try <e> {E Element; предыдущий ous; ;
Вот типичное использование статических внутренних классов
Класс инструмента синхронизации Java
/** * Несколько потоков должны быть начаты для импорта данных интерфейса в целевых партий. Это является сущностью проблемы * межполосной синхронизации. Это позволяет завершить его до завершения набора * операций, выполняемых в других потоках. * Инициализировать обратный отсчет с данным количеством. Поскольку метод обратного отсчета () вызывается, метод * await будет заблокирован до тех пор, пока текущий счет не достигнет нуля. После этого будут выпущены все резьбы ожидания, и все последующие вызовы ожидания будут возвращены немедленно. * Это явление происходит только один раз - количество не может быть сброшено (это очень важно). Если вам нужно сбросить счет, рассмотрите возможность использования Cyclicbarrier. * Ниже приведен простой пример для моделирования этого требования. * Класс, его класс является относительно сложным* **/ Импорт java.util.arraylist; <Integer> strlist = null; } public static void main (string args []) {boolean isend = true; )> :::::::::::::: :::::::::: ++ i) {новый поток (D.new Worker (Startsignal, Donesignal, i)). Start (); {Random r = new random (); (); add (i); Final CountdayLatch Donesignal; Для основного потока, чтобы выполнить обратный отсчет. {int start = (i)*(50/5); strlist.get (i) + "---" + "Удален");