Есть ли способ вывода типа данных java на консоль?
Я пытаюсь отлаживать унаследованную программу. Эта программа содержит строки, списки массивов и коллекции, множество кастингов между типами, и мне нужно выполнить некоторые манипуляции с строками (substring
и т.д.)
Данные выглядят как строки при печати на консоли (например, это строка текста, например Johnson, John
или Chicago Region
), но мой код выдает ошибку с различными ошибками index out of range
, что указывает на то, что мой код cast to String не работает.
Я хотел бы попытаться выяснить, какие типы данных входят и оставляют мои методы, чтобы убедиться, что программа работает должным образом. Есть ли способ найти тип поля в Java? В идеальном мире я мог бы генерировать вывод консоли на каждом шаге, который дал бы мне значение данных и будь то String, список массивов или коллекция. Это можно сделать?
Ответы
Ответ 1
Учитывая экземпляр любого объекта, вы можете вызвать его метод getClass(), чтобы получить экземпляр объекта Class, который описывает тип объекта.
Используя объект Class, вы можете легко напечатать его имя типа:
Integer number=Integer.valueOf(15);
System.out.println(number.getClass().getName());
Эта печать предназначена для консолирования полного имени класса, которое для примера:
java.lang.Integer
Если вы хотите получить более сжатый вывод, вы можете использовать вместо этого:
Integer number=Integer.valueOf(15);
System.out.println(number.getClass().getSimpleName());
getSimpleName() дает вам только имя класса:
Integer
Печать типа примитивных переменных несколько сложнее: подробнее см. этот вопрос SO.
Ответ 2
Для любого объекта x
вы можете напечатать x.getClass()
.
Ответ 3
Просто выполните .class.getName();
в любом объекте
Ответ 4
instance.getClass()
- это способ пойти, если вы просто хотите напечатать тип. Вы также можете использовать instanceof
, если хотите разветкить поведение на основе типа, например.
if ( x instanceof String )
{
// handle string
}
Ответ 5
Используйте метод getClass()
.
Object o;
System.out.println(o.getClass());