-1

所以我有一个演员列表,我想获取每个演员的动态类名。例如,这是我的演员列表:人、鸟、牛。

我想得到相同的结果:“人,鸟,牛”,但在 Actors 类中没有名称属性。可能吗?

示例代码(这里我使用数组而不是列表):

public Area map[][];
map[0][0] = new AntHillArea();
String name = map[0][0].getClass().getName(); //this results "Area" instead of AntHillArea

编辑:代码还有其他问题, getClass().getName() 工作正常。不管怎么说,还是要谢谢你。

4

2 回答 2

8
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方法。它只给你类,如果有的话,它会删除任何包。

于 2013-04-20T19:47:09.953 回答
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);

于 2013-04-20T19:48:21.837 回答