gpt4 book ai didi

java - 为什么 Class.getSuperclass() 有时会返回 Object.class?

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:37 25 4
gpt4 key购买 nike

根据Class.getSuperclass() documentation :

Returns the Class representing the superclass of the entity (class, interface, primitive type or void) represented by this Class. If this Class represents either the Object class, an interface, a primitive type, or void, then null is returned.

但我有时看到 Object.class 被返回(使用 jdk1.7.0_45)——所以我不得不单独检查它:

final Class<?> superclass = modelClass.getSuperclass();
if ((superclass != null) && (Object.class != superclass)) {
// Do stuff with superclasses other than Object.
}

这是 Java 错误吗?有没有更好的方法来检查 superclass 是否是 Object

最佳答案

文档说,如果您的类是 java.lang.Object,那么它的 getSuperclass 将返回 null。换句话说,如果你这样做

Class objSuper = Object.class.getSuperclass();

那么 objSuper 将是 null;这正是正在发生的事情(demo)。

但是,您的 modelClass 似乎不是 java.lang.Object,而且它也不是基元或接口(interface).因此,返回 java.lang.Object 非常有意义,因为所有类都隐式继承自它。

关于java - 为什么 Class.getSuperclass() 有时会返回 Object.class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196629/

25 4 0
文章推荐: ios - Swift - @IBDesignable - Storyboard 中未显示旋转
文章推荐: java - 用户 : null doesnt have permission=CREATE_DURABLE_QUEUE on address
文章推荐: swift - UICollectionViewLayout 子类转换为子类
文章推荐: java - 类型中的方法 func(List) 不适用于参数 (List)