Tôi muốn mở rộng câu trả lời của Martin ở đó ...
Giải pháp của anh ấy khá hay, nhưng nó có thể được điều chỉnh để bất kỳ "loại biến" nào cũng có thể được in như thế. (Đó thực sự là Loại giá trị, thêm về chủ đề ). Điều đó nói rằng, "điều chỉnh" có thể là một từ mạnh mẽ cho điều này. Bất kể, nó có thể hữu ích.
Giải pháp Martins:
a.getClass().getName()
Tuy nhiên, nếu bạn muốn nó hoạt động với bất cứ điều gì bạn có thể làm điều này:
((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()
Trong trường hợp này, người nguyên thủy sẽ đơn giản được bọc trong Wrapper. Bạn sẽ nhận được Object của nguyên thủy trong trường hợp đó.
Bản thân tôi đã sử dụng nó như thế này:
private static String nameOf(Object o) {
return o.getClass().getSimpleName();
}
Sử dụng Generics:
public static <T> String nameOf(T o) {
return o.getClass().getSimpleName();
}