Что Вы называете индикатором выполнения цикличного выполнения?

в учебном руководстве по Java говорится :

Терминология: Вложенные классы разделены на две категории: статичный и нестатичный. Вложенные классы, которые объявляются статичные, просто называют статическими вложенными классами. Нестатические вложенные классы называют внутренними классами.

Говоря обычным языком, термины, "вложенные" и "внутренние", используются попеременно большинством программистов, но я использую правильный термин, "вложил класс", который покрывает и внутренний и статичный.

Классы могут быть вложены до бесконечности , например, класс A может содержать класс B, который содержит класс C, который содержит класс D, и т.д. Однако больше чем один уровень вложения класса редок, поскольку это - вообще плохой дизайн.

существует три причины, Вы могли бы создать вложенный класс:

  • организация: иногда кажется самым разумным отсортировать класс в пространство имен другого класса, особенно когда это не будет использоваться ни в каком другом контексте
  • доступ: вложенные классы имеют специальный доступ к переменным/полям их содержания классов (точно, какие переменные/поля зависит от вида вложенного класса, или внутренний или статичный).
  • удобство: необходимость создать новый файл для каждого нового типа является надоедливой, снова, особенно когда тип будет только использоваться в одном контексте

существует четыре вида вложенного класса в Java. Короче говоря, они:

  • статический класс : объявленный как статический член другого класса
  • внутренний класс : объявленный как член экземпляра другого класса
  • локальный внутренний класс : объявленный в методе экземпляра другого класса
  • анонимный внутренний класс : как локальный внутренний класс, но записанный, поскольку выражение, которое возвращает одноразовый объект

, Позволило мне уточнить более подробно.


Статические Классы

Статические классы являются самым легким видом для понимания, потому что они не имеют никакого отношения к экземплярам содержания класса.

А статический класс является классом, объявленным как статический член другого класса. Точно так же, как другие статические участники такой класс является действительно просто кронштейном на этом, использует содержание класса в качестве его пространства имен, , например, класс Коза объявленный как статический член класса Носорог в пакете , пицца известна именем пицца. Носорог. Коза .

package pizza;

public class Rhino {

    ...

    public static class Goat {
        ...
    }
}

Откровенно говоря, статические классы являются довольно бесполезной функцией, потому что классы уже разделены на пространства имен пакетами. Единственная реальная мыслимая причина создать статический класс состоит в том, что такой класс имеет доступ к своему содержанию частных статических участников класса, но я нахожу, что это довольно хромое выравнивание для статической функции класса для существования.


Внутренние Классы

внутренний класс является классом, объявленным как нестатический член другого класса:

package pizza;

public class Rhino {

    public class Goat {
        ...
    }

    private void jerry() {
        Goat g = new Goat();
    }
}

Как со статическим классом, внутренний класс известен, как квалифицировано его содержанием имени класса, пицца. Носорог. Коза , но в содержании класса, это может быть известно его простым именем. Однако каждый экземпляр внутреннего класса связывается с конкретным экземпляром своего содержания класса: выше, Коза созданный в [1 120] Джерри , неявно связывается с Носорог экземпляр это в [1 123] Джерри . Иначе мы делаем связанное Носорог экземпляр явный, когда мы инстанцируем Коза :

Rhino rhino = new Rhino();
Rhino.Goat goat = rhino.new Goat();

(Замечают, Вы называете внутренний тип как всего Коза в странном новый синтаксис: Java выводит содержание типа из носорог часть. И, да новый носорог. Коза () имела бы больше смысла мне также.)

Поэтому, что это получает нас? Ну, внутренний экземпляр класса имеет доступ к членам экземпляра содержания экземпляра класса. Эти члены экземпляра включения упомянуты во внутреннем классе через [1 130] просто их простые имена, не через [1 131] это (, это во внутреннем классе относится к внутреннему экземпляру класса, не связанному, содержащему экземпляр класса):

public class Rhino {

    private String barry;

    public class Goat {
        public void colin() {
            System.out.println(barry);
        }
    }
}

Во внутреннем классе, можно обратиться к [1 134] это из содержания класса как [1 135] Rhino.this, и можно использовать это , чтобы относиться к его участникам, , например, Rhino.this.barry.


Локальные Внутренние Классы

А локальный внутренний класс является классом, объявленным в теле метода. Такой класс только известен в рамках его содержания метода, таким образом, это можно только инстанцировать и получать доступ к его участникам в рамках его содержания метода. Усиление - то, что локальный внутренний экземпляр класса связывается с и может получить доступ к заключительным локальным переменным своего содержания метода. Когда экземпляр использует финал, локальный из его содержания метода, переменная сохраняет значение, которое это содержало во время создания экземпляра, даже если переменная вышла из объема (это - эффективно сырая, ограниченная версия Java закрытий).

, поскольку локальный внутренний класс не является ни один членом класса или пакета, он не объявляется с уровнем доступа. (Будьте ясны, однако, как который у его собственных участников есть уровни доступа в нормальном классе.)

, Если локальный внутренний класс объявляется в методе экземпляра, инстанцирование внутреннего класса связывается с экземпляром, сохраненным содержанием метода это во время создания экземпляра, и таким образом, содержание членов экземпляра класса доступно как в экземпляре внутренний класс. Локальный внутренний класс инстанцируют просто через [1 139] его имя, , например, , локальный внутренний CAT класса инстанцируют как [1 142] новый CAT () , не новый это. CAT (), как Вы могли бы ожидать.


Анонимные Внутренние Классы

анонимный внутренний класс является синтаксически удобным способом записать локальный внутренний класс. Обычно, локальный внутренний класс инстанцируют самое большее только однажды каждый раз, когда его содержание метода выполняется. Было бы хорошо, тогда, если бы мы могли бы объединить локальное внутреннее определение класса и его единственное инстанцирование в одну удобную форму синтаксиса, и также было бы хорошо, если бы мы не должны были продумывать название класса (чем меньше бесполезных имен Ваш код содержит, тем лучше). Анонимный внутренний класс позволяет обе этих вещи:

new *ParentClassName*(*constructorArgs*) {*members*}

Это - выражение, возвращая новый экземпляр класса без имени, который расширяется ParentClassName. Вы не можете предоставить своего собственного конструктора; скорее каждый неявно предоставляется, который просто вызывает супер конструктора, таким образом, предоставленные аргументы должны соответствовать супер конструктору. (Если родитель содержит несколько конструкторов, “simplest”, которыми каждого называют, “simplest”, как определено довольно сложным рядом правил, который не стоит потрудиться учиться подробно - просто, обращают внимание на то, что NetBeans или Eclipse говорят Вам.)

, С другой стороны, можно определить интерфейс для реализации:

new *InterfaceName*() {*members*}

Такое объявление создает новый экземпляр класса без имени, который расширяет Объект и реализует InterfaceName. Снова, Вы не можете предоставить своего собственного конструктора; в этом случае Java неявно предоставляет пустого конструктора без аргументов (таким образом, никогда не будет аргументов конструктора в этом случае).

Даже при том, что Вы не можете дать анонимному внутреннему классу конструктора, можно все еще сделать любую установку, Вы хотите использовать блок инициализатора ({} блок, помещенный вне любого метода).

Быть ясным, что анонимный внутренний класс является просто менее гибким способом создать локальный внутренний класс с одним экземпляром. Если Вы хотите локальный внутренний класс, который реализует несколько интерфейсов или который реализует интерфейсы при расширении некоторого класса кроме [1 145] Объект или который определяет его собственного конструктора, Вы застреваете, создавая регулярный именованный локальный внутренний класс.

12
задан gkrogers 19 December 2010 в 11:30
поделиться

9 ответов

Считается, что в Windows индикаторы выполнения находятся в режиме Marquee.

См. http://msdn.microsoft.com/en-us/library/bb760816% 28VS.85% 29.aspx

24
ответ дан 2 December 2019 в 03:25
поделиться

Неопределенный индикатор выполнения ?

Java JProgressBar конкретно ссылается на «неопределенный режим»

12
ответ дан 2 December 2019 в 03:25
поделиться

В GTK это нормальный индикатор выполнения, просто установите его в режим «Импульс».

5
ответ дан 2 December 2019 в 03:25
поделиться

Я слышал, что это называется следующим образом:

2
ответ дан 2 December 2019 в 03:25
поделиться

Я всегда знал индикатор занятости, который не показывает относительный прогресс, как "счетчик". В данном случае это может быть перемычка, но это то же самое.

t указывает относительный прогресс как "счетчик". В данном случае это может быть перемычка, но это то же самое.

t указывает относительный прогресс как "счетчик". В данном случае это может быть перемычка, но это то же самое.

1
ответ дан 2 December 2019 в 03:25
поделиться

Поиск в Google по запросу "загрузка gif" возвращает довольно много примеров. Значок загрузки тоже работает.

http://images.google.com/images?hl=ru&um=1&sa=1&q=loading+gif&btnG=Search+images&aq=f&oq=loading+gi

0
ответ дан 2 December 2019 в 03:25
поделиться

У меня было такое же заблуждение некоторое время назад, когда я проектировал всплывающую галерею изображений на ebuyer.com. Я думаю, что «предварительная загрузка» или «анимация загрузки», вероятно, наиболее точное описание.

Индикатор выполнения дает фактическую визуальную обратную связь о количестве времени, которое вы можете ожидать, в то время как вы просто хотите дать пользователю некоторая обратная связь о том, что их действие было подтверждено и ответ еще не получен. Я думаю, Windows описывает курсор как «подождите». В Макленде мы знаем его как «пляжный мяч».

0
ответ дан 2 December 2019 в 03:25
поделиться

Я не знаю, как они называются, но они меня беспокоят. Это неправильное применение инструмента, предназначенного для одной цели - указать, насколько близка длительная задача к завершению - к другой проблеме - убедить пользователя в том, что длительная задача неопределенной длины на самом деле все еще выполняется.

Одна из вещей, которая больше всего приводит в бешенство пользователя (и под «пользователем» я имею в виду «меня»), - это то, что Microsoft делает так часто: задача выполняется, индикатор выполнения постепенно заполняется, а затем, когда дело доходит до конца, оно начинается снова. И вы понимаете, что вас обманули: пользовательский интерфейс сказал вам, что задача вот-вот будет завершена, но внезапно вы увидите, что это неправда, программа фактически не знает, когда задача будет завершена.

0
ответ дан 2 December 2019 в 03:25
поделиться

Я слышал, что это называется Spinner

0
ответ дан 2 December 2019 в 03:25
поделиться