[JAVA]如何获取泛型类类型名称
我希望通过java反射获得字符串值中的E类名。 例如,如果我创建的节点类型为Person,则getClassName()必须返回“Person” 有人能帮我吗[JAVA]如何获取泛型类类型名称,java,Java,我希望通过java反射获得字符串值中的E类名。 例如,如果我创建的节点类型为Person,则getClassName()必须返回“Person” 有人能帮我吗 public class Node<E extends AbstractNode> { String getClassName() { String name = ?? } private String alias; public Node() { } } public abstract class Ab
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;
}
}
公共类节点{
字符串getClassName(){
字符串名=??
}
私有字符串别名;
公共节点(){
}
}
公共抽象类抽象节点{
}
公共类Person扩展抽象节点{
私有字符串名称;
私家姓;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getNames(){
返回姓氏;
}
public void setSurname(字符串姓氏){
this.姓氏=姓氏;
}
}
向节点添加一个字段
类
private static final Class<T> type;
最后,在节点
类中创建getClassName
方法:
public String getClassName(){
return this.type.getName();
}
编辑:
作为旁注,您的
AbstractNode
类实际上是不必要的(它不做任何事情),因此extend
也不是亲自的 我不太明白你的例子和要求,你能详细说明一下吗?Person
和Node
(我猜你的意思是)有什么关系?Node
在何处使用以及如何使用?Node的可能重复是一个简单的对象,它具有属性,但与扩展AbstractNode的值无关。这实际上取决于如何使用Node
,例如,如果节点包含类型为e
的元素,则可以在此基础上调用getClass()
,如果您使用具体的子类,如PersonNode extends Node
,则可以使用反射来获取类型参数等(注意,在大多数情况下,由于类型擦除不适用于Node
类型的变量)。
public String getClassName(){
return this.type.getName();
}