Я согласен с тем, что сказал Йоахим Зауэр, и узнать его невозможно (тип переменной! Не тип значения!), Если только ваша переменная не является атрибутом класса (и вам нужно будет получить поля класса, получить правильное поле по имени). .)
На самом деле для меня совершенно невозможно, чтобы какой-либо метод a.xxx().yyy()
дал вам правильный ответ, поскольку ответ был бы разным для одного и того же объекта в зависимости от контекста, в котором вы вызываете этот метод ...
Как сказал teehoo, если вы знаете при компиляции определенного списка типов для тестирования, вы можете использовать instanceof, но вы также получите подклассы, возвращающие true ...
Одним из возможных решений также было бы вдохновить себя реализацией java.lang.reflect.Field
и создать собственный класс Field
, а затем объявить все свои локальные переменные как эту пользовательскую реализацию Field
... но вам лучше найти другое решение, мне действительно интересно, зачем вам нужен тип переменной, а не только тип значения?