Невозможно вызвать toString () для примитива типа int - PullRequest
9 голосов
/ 01 апреля 2012

По сути, я пытаюсь получить идентификатор товара и установить цену из ini, например: itemid: price но я не могу просто сделать item.getId (). toString (). Я пытаюсь получить предмет Что я могу сделать, чтобы сделать его строкой?

public static void getBuyPrice(Item item) {
    try {
        String itemId = item.getId().toString();
        BufferedReader br = new BufferedReader(new FileReader(new File(
                "./data/prices.ini")));
        String line;
        while ((line = br.readLine()) != null) {
            if (line.equals(itemId)) {
                String[] split = line.split(":");
                item.getDefinitions().setValue(Integer.parseInt(split[1]));
            }
        }
        br.close();
    } catch (Throwable e) {
        System.err.println(e);
    }
}

Это мой код (конечно, у меня есть ошибка в item.getId (). ToString ()), что я могу сделать, чтобы преобразовать это в строку?

Ответы [ 6 ]

50 голосов
/ 01 апреля 2012

Примитивные типы не имеют методов, так как они не являются объектами в Java. Вы должны использовать соответствующий класс:

Integer.toString(item.getId());
6 голосов
/ 01 апреля 2012
String itemId = Integer.toString(item.getId());
3 голосов
/ 01 апреля 2012
String itemId = Integer.toString(item.getId());
0 голосов
/ 19 июля 2018

Лучше:

String itemId = String.valueOf(item.getId());
0 голосов
/ 08 августа 2014

Другой простой способ - просто сказать "" + myInt, предполагая, что myInt назначен.

Так что попробуйте:

item.getDefinitions().setValue("" + Integer.parseInt(split[1]));

Конечно, вы можете захотеть обернуть строку в try / catch, если есть ошибки синтаксического анализа или split [1] имеет значение null, индекс выходит за пределы диапазона и т. Д.

Кроме того, метод Integer.valueOf(str) вернет объект Integer (в отличие от примитива), который позволит вам напрямую вызывать функцию .toString ().

item.getDefinitions().setValue(Integer.valueOf(split[1]).toString());

Мне особенно нравится .valueOf (), потому что он кэширует много объектов Integer.

0 голосов
/ 24 декабря 2013

Примитивные типы (int, double, byte и т. Д.) Не могут иметь методов. Так что используйте это:

String itemId = String.valueOf(item.getId());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...