- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
根据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/
考虑以下两种情况 案例一 我有一个简单的 Java 类,它有一个无参数构造函数。下面是代码 public class TestClassOne { public TestClassOne(
我正在尝试找出JAVA中super关键字背后的实现。 我创建了一个抽象类和一个公共(public)类扩展 abstract class AbsClass { private String co
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我有一个函数 public void get(Object s) { while (s.getClass().getSuperclass() != null) { s = s.getC
如何在 Java ME 中获取 Class 实例的父类(super class)。也就是说,用 CLDC 1.1 中可用的有限功能伪造 Class.getSuperclass() 功能? 我想做的是让
Class getSuperclass() Class类中的getSuperclass()返回一个类型为,这意味着Super类的Class的类型参数可以是T或者它的任何Superclasses,那么
根据Class.getSuperclass() documentation : Returns the Class representing the superclass of the entity
本文整理了Java中org.codehaus.enunciate.contract.jaxws.WebFault.getSuperclass()方法的一些代码示例,展示了WebFault.getSup
这是《Java 哲学》书中的示例(请记住 FancyToy 扩展了 Toy): Class ftClass = FancyToy.class; Class up = ftClass.getSuperc
假设有两个类,即Pet和 Dog . Pet class 是 Dog 的父类(super class)类。 问题01: 当我编写如下代码时,发生编译错误:Type mismatch: cannot c
我是一名优秀的程序员,十分优秀!