gpt4 book ai didi

java - 从父类(super class)中获取子类的名称

转载 作者:IT老高 更新时间:2023-10-28 13:52:09 27 4
gpt4 key购买 nike

假设我有一个名为 Entity 的基类。在那个类中,我有一个静态方法来检索类名:

class Entity {
public static String getClass() {
return Entity.class.getClass();
}
}

现在我有另一个类扩展它。

class User extends Entity {
}

我想获取用户的类名:

System.out.println(User.getClass());

我的目标是看到“com.packagename.User”输出到控制台,但我最终会得到“com.packagename.Entity”,因为实体类是直接从静态方法引用的。

如果这不是静态方法,则可以通过在 Entity 类中使用 this 关键字轻松解决(即:return this.class .getClass())。但是,我需要这种方法保持静态。关于如何解决这个问题的任何建议?

最佳答案

不要将方法设为静态。问题是当您调用 getClass() 时,您正在调用父类(super class)中的方法 - 静态方法不会被继承。此外,您基本上是在对 Object.getClass() 进行名称隐藏,这令人困惑。

如果您需要在父类(super class)中记录类名,请使用

return this.getClass().getName();

当你有一个 Entity 实例时这将返回“Entity”,当你有一个 User 实例时返回“User”,等等。

关于java - 从父类(super class)中获取子类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3417879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com