Я предполагаю, что вы имеете в виду на Java. Ответ зависит от того, кто делает идентификацию:
Если вы являетесь ПРОГРАММИСТОМ и читаете код, то вы можете узнать тип переменной, читая вверх по текущему методу в поисках объявления переменной. Если он там не найден, посмотрите в текущем классе объявление переменной экземпляра с таким именем. Объявления всегда дают тип в Java (в отличие от Haskell или Scala, которые строго типизированы, но имеют хороший вывод типов), поэтому вам никогда не придется смотреть дальше, чем объявление переменной.
Если вы являетесь КОМПИЛЕРОМ и генерируете код из исходного кода, вы можете использовать тот же подход, что и программист. Кроме того, у вас также есть несколько дополнительных вариантов - во многих случаях вы можете определить, что переменная не «выходит» за пределы блока кода, который вы компилируете, и, следовательно, вы можете даже никогда не создать переменную ... просто сохраняйте данные в регистре.
Если вы ИСПОЛНИТЕЛЬНАЯ ПРОГРАММА, тогда возникает вопрос об определениях. Найти тип переменной бессмысленно - переменные - это всего лишь метки в коде, а во время выполнения на самом деле существуют объекты, хранящиеся в этих переменных. Однако равно , вполне вероятно, что для некоторого типа объекта у вас может быть переменная какого-то универсального типа, и вы хотите знать, что является реальным типом реального экземпляра. (Для примитивных типов нет подклассов, поэтому проблема никогда не может возникнуть.) Например, у вас может быть это:
public void someFunc(Animal animal) {
// Here I want to know if 'animal' is a 'Dog' or a 'Cat'
}
В этом случае вы можете использовать метод getClass (), который присутствует на всех объектах в Java:
public void someFunc(Animal animal) {
System.out.println("The type of animal is: " + animal.getClass());
}
Надеюсь, это поможет!