Как я получаю Представление Промежутка времени в P4Win?

Есть способ сделать то, что вы хотите, без итерации по каждому объекту.

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ : это грязный, смешной и довольно сложный способ. Если реализовано, вы должны получить доступ к своему значению selected только через isSelected() (что является общим требованием инкапсуляции).

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


Теперь, когда я сначала поставил отказ от ответственности:

Приписать им глобальный переключатель

Создать объект «Переключатель», который вы можете дать всем им, класс должно выглядеть следующим образом:

class Switch {
    private boolean switchedOff = false;
    private LocalDateTime lastSwitchOff;

    public boolean isSwitchedOff() {
        return switchedOff;
    }

    public void switchOff() {
        switchedOff = true;
        lastSwitchOff = LocalDateTime.now();
    }

    public LocalDateTime getLastSwitchOff() {
        return lastSwitchOff;
    }
}

Как только ваш переключатель переключен, все вызовы isSelected() вашего объекта Tag вернут false, если вы не установите их снова. Вот как вы добавляете его в свой Tag класс:

public class Tag {
    private final String title;
    private final String id;
    private boolean selected;
    private Switch theSwitch;
    private LocalDateTime lastModified;

    public boolean isSelected() {
        if (theSwitch != null && theSwitch.isSwitchedOff() &&  lastModified.isBefore(theSwitch.getLastSwitchOff())) return false;
        else return selected;
    }

    public void setSelected(boolean selected) {
        lastModified = LocalDateTime.now();
        this.selected = selected;
    }

    public Tag(String id, String title, boolean selected, Switch theSwitch) {
        lastModified = LocalDateTime.now();
        this.id = id;
        this.title = title;
        this.selected = selected;
        this.theSwitch = theSwitch;
    }

    ...
}

И затем вы можете использовать его следующим образом:

public static void main(String[] args) {
    Switch mySwitch = new Switch();
    List<Tag> brandList = new ArrayList<>();
    brandList.add(new Tag("1", "A", false, mySwitch));
    brandList.add(new Tag("2", "v", true, mySwitch));
    brandList.add(new Tag("3", "f", false, mySwitch));
    brandList.add(new Tag("4", "g", true, mySwitch));
    brandList.add(new Tag("5", "y", true, mySwitch));
    brandList.add(new Tag("18", "y", true, mySwitch));
    brandList.add(new Tag("16", "j", true, mySwitch));
    brandList.add(new Tag("19", "m", false, mySwitch));

    mySwitch.switchOff();

    // Now all of the isSelected() calls will return false 
}
5
задан JasonMArcher 4 April 2011 в 20:06
поделиться

2 ответа

Хорошо я сделал это сам. Шаги, которые я выполнил, были: 1. Удалите каждый По необходимости продукт на моей машине. 2. Перезагрузка. 3. Установка P4V. 4. Перезагрузка. 5. Insteall P4Win. 6. Перезагрузка.

Затем Представление Таймлапса (и График Пересмотра, другой полезный инструмент, который можно только получить от инструментов P4V) обнаруживается в P4Win. Ура!

По тому, как я пытался удалить их всех, затем переустанавливая в правильном порядке БЕЗ любого из тех шагов перезагрузки... провал. Вероятно, не все те шаги перезагрузки необходимы, но я хотел быть уверенным, и это работало.

Я хотел бы занять это место для высказывания еще раз: P4V является экскрементами осла и По необходимости должен прекратить пытаться пихнуть его вниз наши горла и продолжить основываться на фантастическом продукте, который они имеют в P4Win. kthxbye.

3
ответ дан 15 December 2019 в 01:13
поделиться

Этот метод также работает для 64-разрядной версии Windows 7 с 64-разрядными версиями P4V и P4Win

1
ответ дан 15 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: