我有一个功能
public void get(Object s) {
while (s.getClass().getSuperclass() != null) {
s = s.getClass().getSuperclass();
}
}
事实是,即使
s.getClass().getSuperclass()
没有超类,null
也不会返回Object
。我不明白为什么会这样,尽管我多次调试了该项目。
最佳答案
在这里,您将一个类分配给s
:
s = s.getClass().getSuperclass();
那么循环条件是:
s.getClass().getSuperclass();
Class对象的类为
Class.class
,其getSuperclass
返回Object.class
,因此循环条件的值为true。然后将
s
分配给Object.class
:s = s.getClass().getSuperclass();
谁的班级是
Class.class
并且具有超类。无限重复广告。为该类使用其他变量。
Class<?> cls = s.getClass().getSuperclass();
while(cls != null) {
cls = cls.getSuperclass();
}