Yii2 RBAC Redis - что не так?

Если метод equals() присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим две различные ссылочные переменные, str1 и str2:

str1 = new String("abc");
str2 = new String("abc");

Если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

, вы получите выход как TRUE, если вы используете ==.

System.out.println((str1==str2) ? "TRUE" : "FALSE");

Теперь вы получите вывод FALSE в качестве вывода, потому что оба str1 и str2 указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String() каждый новый объект создается каждый раз.

0
задан FeR-S 26 February 2019 в 08:04
поделиться

1 ответ

Я проверил его в других приложениях и средах и заметил, что он работает в версии "yiisoft/yii2-redis": "2.0.8" и в "yiisoft/yii2-redis": "2.0.9" выдает ошибку ( sweelix \ rbac \ redisManager в строке 364 ]: $ruleGuid = $this->db->executeCommand('HGET', [$this->getRuleMappingKey(), $item->ruleName]);). Если принудительно переключиться на версию пакета « 2.0.8 », ошибка исчезнет.

0
ответ дан FeR-S 26 February 2019 в 08:04
поделиться
Другие вопросы по тегам:

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