Подтвердить что ты не робот

Есть ли способ вывода типа данных java на консоль?

Я пытаюсь отлаживать унаследованную программу. Эта программа содержит строки, списки массивов и коллекции, множество кастингов между типами, и мне нужно выполнить некоторые манипуляции с строками (substring и т.д.)

Данные выглядят как строки при печати на консоли (например, это строка текста, например Johnson, John или Chicago Region), но мой код выдает ошибку с различными ошибками index out of range, что указывает на то, что мой код cast to String не работает.

Я хотел бы попытаться выяснить, какие типы данных входят и оставляют мои методы, чтобы убедиться, что программа работает должным образом. Есть ли способ найти тип поля в Java? В идеальном мире я мог бы генерировать вывод консоли на каждом шаге, который дал бы мне значение данных и будь то String, список массивов или коллекция. Это можно сделать?

4b9b3361

Ответ 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());