Почему в Eclipse строка показана с двумя наборами двойных кавычек? - PullRequest
4 голосов
/ 10 октября 2011

Эта проблема сводит меня с ума!Я объявил статическую строку в классе констант следующим образом:

public static final String REGISTRATION_USERNAME_TAKEN = "Username is already in use. Please choose a different name.";

После вызова спокойного веб-сервиса для регистрации пользователя ответ (во время отладки) перехватывается и сравнивается с константой.Ответ также отображается в двойных двойных кавычках (не уверен почему), и result.equals () завершается ошибкой, хотя и результат, и константа выглядят одинаково.Ниже приведен снимок экрана во время отладки в Eclipse, который показывает двойные двойные кавычки.Количество символов 61 включает один набор двойных кавычек.

Кто-нибудь видел это раньше в Eclipse?Кроме того, почему .equals () завершается ошибкой, когда обе строки имеют одинаковые значения (я имею в виду, что обе строки содержат одинаковые символы в одинаковой последовательности)?

enter image description here

1 Ответ

0 голосов
/ 01 августа 2012

Относительно сбоя метода .equals () при сравнении String с константой enum, на самом деле это поведение по умолчанию, если вы не переопределили метод toString () в классе enum.

Например:

public MyEnum
{
  LIL, LOL
}

//try inside main method
String result = "LOL";

if(result.equals(MyEnum.LOL))
System.out.println("true");
else
System.out.println("false"); //will print false

поэтому, если вы хотите сравнить String с точным значением String, которое может иметь перечисление, вы можете добавить в перечисление личное поле, которое будет содержать соответствующее им значение String, которое вы определите внутри конструктора, и вернуть путем переопределения. toString () внутри перечисления, или вы можете принудительно использовать toString (), просто выполнив это:

if(result.equals((MyEnum.LOL).toString())
//same code as before would print true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...