所以我有一个Actors列表,我希望得到每个Actors动态类名。 例如,这是我的演员列表:人物,鸟类,奶牛。
我想得到相同结果:“人,鸟,牛”,但在Actors类中没有name属性。有可能吗?
示例代码(这里代替我使用数组的列表):
public Area map[][];
map[0][0] = new AntHillArea();
String name = map[0][0].getClass().getName(); //this results "Area" instead of AntHillArea
编辑:代码还有其他问题,getClass()。getName()工作正常。不管怎样,谢谢。
答案 0 :(得分:5)
String className = obj.getClass().getSimpleName();
<强>更新强>
public class Test {
public static void main(String[] args) {
Area map[][] = new Area[1][1];
map[0][0] = new AntHillArea();
String name = map[0][0].getClass().getSimpleName(); // returns "AntHillArea"
System.out.println(name);
}
}
class Area {
}
class AntHillArea extends Area {
}
使用getSimpleName
方法。它只给你一个类,如果有的话会删除任何包。
答案 1 :(得分:1)
你可以这样做:
class Dog
{
//code
public String getName()
{
return Dog.class.getName();
}
//better
@Override
public String toString()
{
return Dog.class.getName();
}
}
同样对于每个班级。或者在其他答案中提到全球性的:
public static String getClassName(Class<?> clas){
return clas.getName();
}
使用Dog dog = new Dog(); getClassName(dog.class);