如何获取对象的动态类名?

时间:2013-04-20 19:44:38

标签: java class

所以我有一个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()工作正常。不管怎样,谢谢。

2 个答案:

答案 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);