Статическая функция Constant.g() описана ниже:
public class Constant {
private static Properties constantConfig;
public static String g(String property) {
try {
if (constantConfig == null) {
constantConfig = new Properties();
constantConfig.load(new FileInputStream(System.getProperty("user.dir") + "/" +
"constants.properties"));
}
} catch (IOException e) {
e.printStackTrace();
}
return constantConfig.getProperty(property);
}
}
У меня есть json, и я конвертирую его в карту, как показано ниже:
Map data = (new ObjectMapper()).readValue(json, HashMap.class);
Затем я наблюдаю следующее поведение:
Constant.g("user_id") // this returns String "userId" successfully
data.get("userId") // This also works fine and return value correctly
но код ниже возвращает null:
data.get(Constant.g("user_id"))
Это может быть проблема с equal() и HashCode(). Как я могу это решить?
Тогда что еще это может быть?
"userId".equals(Constant.g("user_id")) возвращает true?
Сначала проверьте это с помощью отладчика. Держу пари, что Constat.g ("user_id") не вернул в вашем случае "userId" или данные не содержат ключа "userId"
..или есть пробелы или аналогичная незначительная проблема.
@ 4castle "userId".equals(Constant.g("user_id")) возвращает false. Можете ли вы немного помочь?
@Vicctor, как я уже сказал, он возвращает Constat.g("user_id") правильно возвращает userId
@Kayaman Я тоже пробовал обрезать, и это не работает
Если он возвращает false, значит, он неправильно возвращает userId. Попробуйте вызвать .toCharArray() для строк и сравните их более внимательно. Наверное, есть какой-то непечатный персонаж.
@ 4castle, что касается System.out.print (), он печатает нормально. Я попробую твой путь.
«Печатает нормально», но работает некорректно.
@ 4castle Большое спасибо. Ваш toCharArray() помог в решении моей проблемы. Мой файл constants.properties - отстой. Еще раз, спасибо. Пожалуйста, дайте мне знать, могу ли я дать вам хоть какой-то балл?




Stringправильно реализуетequals()иhashcode(), так что это не имеет к этому никакого отношения. То, что вы описываете, не может произойти с показанным кодом (последние 2 фрагмента).