[JAVA]如何获得泛型类型名称

时间:2017-01-10 09:45:39

标签: java

我想用java反射在String值中获取E类名。 例如,如果我创建在Person中键入的Node,则getClassName()必须返回“Person”

有人可以帮帮我吗?

public class Node<E extends AbstractNode> {

String getClassName() {
    String name = ?? 
}

private String alias;

public Node() {

}
}


public abstract class AbstractNode {
}


public class Person extends AbstractNode {
private String name;
private String surname;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSurname() {
    return surname;
}

public void setSurname(String surname) {
    this.surname = surname;
}
}

1 个答案:

答案 0 :(得分:0)

Node班级

中添加字段
private static final Class<T> type;

并将其添加到构造函数签名

public Node(Class type) {
   this.type = type;
}

最后,在getClassName课程中创建Node方法:

public String getClassName(){
    return this.type.getName();
}

编辑: 作为旁注,你的AbstractNode类并不是必需的(它没有做任何事情),因此extend也不是人。