>
>
>
V6112. Calling the 'getClass' method re…


V6112. Calling the 'getClass' method repeatedly or on the value of the '.class' literal will always return the instance of the 'Class<Class>' type.

Метод 'getClass' используется для получения типа объекта, у которого данный метод был вызван. Аналогично можно использовать литерал 'class' непосредственно с самим типом, а не объектом.

При использовании метода 'getClass' вместе с литералом 'class' будет получена информация о типе 'Class'. Рассмотрим пример:

var typeInfo = Integer.class.getClass();

В результате вызова данного метода переменная 'typeInfo' будет хранить информацию о типе 'Class'. Это связано с тем, что литерал 'class' хранит информацию типа 'Class<Integer>'. Когда происходит вызов метода 'getClass', то информация будет, соответственно, о типе 'Class', а не о типе 'Integer'. Если нужно получать информацию о типе 'Integer', то достаточно использовать только литерал 'class':

var typeInfo = Integer.class;

Помимо этого, может произойти случайное дублирование вызова 'getClass':

Integer i = 0;
var typeInfo = i.getClass().getClass();

Как и в первом примере, при первом вызове 'getClass' будет получен объект типа 'Class<Integer>'. При повторном вызове 'getClass' будет получена информация о типе 'Class', а не о типе 'Integer'. Чтобы получить информацию именно о типе 'Integer', достаточно вызвать метод один раз:

Integer i = 0;
var typeInfo = i.getClass();

Если требуется информация именно о типе 'Class', то достаточно такой конструкции:

var classType = Class.class;

Допускается использование с 'Class.class' метода 'getClass', так как результат не меняется:

var classType = Class.class.getClass();