ฉันต้องการขยายคำตอบของ Martin ที่นั่น ...
วิธีแก้ปัญหาของเขาค่อนข้างดี แต่มันสามารถปรับแต่งเพื่อให้ "ตัวแปรประเภท" ใด ๆ สามารถพิมพ์เช่นนั้น (จริง ๆ แล้วเป็นประเภทคุ้มค่าเพิ่มเติมในหัวข้อ ) ที่กล่าวว่า "ปรับแต่ง" อาจเป็นคำที่แข็งแกร่งสำหรับเรื่องนี้ มันอาจจะมีประโยชน์
โซลูชั่นมาร์ติน:
a.getClass().getName()
อย่างไรก็ตามหากคุณต้องการให้มันทำงานกับทุกสิ่งคุณสามารถทำได้:
((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()
ในกรณีนี้ดั้งเดิมจะถูกห่อด้วย Wrapper คุณจะได้รับวัตถุของดั้งเดิมในกรณีนั้น
ตัวฉันเองใช้มันอย่างนี้
private static String nameOf(Object o) {
return o.getClass().getSimpleName();
}
ใช้ Generics:
public static <T> String nameOf(T o) {
return o.getClass().getSimpleName();
}