Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- было
- private final Map<String, String> status = new HashMap<String, String>() {{
- status.put("All", "");
- status.put("Active", "false");
- status.put("Completed", "true");
- }};
- стало
- private final Map<String, String> status = new HashMap<String, String>() {
- {
- put("All", "");
- put("Active", "false");
- put("Completed", "true");
- }
- };
- /*
- что исправлено - убрала status. в вызове метода put
- ну и форматирование поменяла немного - для ясности прежде всего
- теперь объяснения
- что мы делаем
- мы делаем объект анонимного класса - потомка HashMap<String, String>
- для которого в instance initialization block (блок с кодом {...}) - указываем -
- что нужно сделать для инициализации такого объекта (3 вызова метода put)
- да, внутри объектов анонимного класса нам видимы все переменные, объявленные там же,
- где и этот объект
- т е переменная status - внутри объекта анонимного класса тоже видима
- но тут смотри - status - это тот же самый объект)
- и мы как раз инициализируем этот объект (мы еще в процессе)
- и при его инициализации - пытаемся оперировать переменной status -
- как указывающей на такой объект
- а это - еще не так - мы еще не закончили инициализацию, мы как раз ее делаем
- и в этот момент status еще равен нуллу
- внутри любого объекта - методы этого же объекта можно вызывать без уточнения -
- для какого объекта вызываем
- т е
- put("All", ""); - работаем с текущим объектом
- это равносильно
- this.put("All", "");
- анонимные классы
- https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
- что такое instance initialization block
- http://www.javamadesoeasy.com/2015/06/differences-between-instance.html
- что такое this
- https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
- http://stackoverflow.com/questions/2411270/when-should-i-use-this-in-a-class
- возможно - это пока сложным кажется
- далее по курсу еще будем разговаривать про анонимные классы
- можно пока отложить это
- потом разберешься лучше
- сейчас - для начала - поменяй код - как я выше описала
- ну и дальше - когда решишь уже существующие проблемки - от этого кода тоже избавимся
- т к по сравнению с другими вариантами - он сложный
- есть варианты понагляднее и попроще
- */
- *****************************
- /*
- когда это поправишь - получишь другую ошибку)
- странная команда собирается
- вот такая
- Command = localStorage.setItem("todos-troopjs", "[{\"active\":false, \"title\":\"newA\"}]")false, \"title\":\"newB\"}]")false, \"title\":\"newC\"}]")
- чтоб ее увидеть - достаточно в методе given перед executeJavaScript
- вывести результирующую строку
- System.out.println("Command = "+queryToExecute.toString());
- надо бы еще поразбираться с given )
- советую сначала это решить, а потом - попробуй описанное ниже применить)
- */
- ***************************************
- /*
- еще момент
- судя по реализации status - ты намерен оперировать тремя состояниями для таски
- а у нас - 2 состояния у таски есть - активная и закомпличеная
- да и вариант сложноватый ты реализовал - с объектом анонимного класса
- я тут расскажу немного об enum
- а ты подумай - как это применить )
- */
- public enum Day {
- MONDAY("понедельник"),
- TUESDAY("вторник"),
- WEDNESDAY("среда"),
- THURSDAY("четверг"),//<<----------------------для каждого значения enum - вызов конструктора, фактически значение = объект класса
- FRIDAY("пятница"),
- SATURDAY("суббота"),
- SUNDAY("воскресенье");
- String description;//<<---------------------------поле для хранения описания дня недели
- public Day(String description) {
- this.description = description;//<<---------------------------логика конструктора - запомнить для объекта его описание
- }
- @Override
- public String toString() {
- return description;//<<---------------------------логика - вывести для объекта - то что для него заполнили
- }
- }
- /*
- все классы - потомки класса Object (enum - это тоже класс)
- у Object есть метод toString()
- который выполняет преобразование объекта к строке
- реализовав такой метод в рамках класса SomeClass -
- используя выражения типа "day is "+ Day.MONDAY
- получишь строку "day is понедельник"
- toString() - можно грамотно использовать в рамках всех вспомогательных классов и enum-ов
- это позволит упростить код
- конструкторы в enum-ах как раз и могут помочь решению задачи
- для каждого значения enum вернуть свою строку
- попробуй применить эти подходы
- вот хороший пример
- http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html
- */
Advertisement
Add Comment
Please, Sign In to add comment