[英]Object.getClass().getSuperclass() not returning null?
我有一個功能
public void get(Object s) {
while (s.getClass().getSuperclass() != null) {
s = s.getClass().getSuperclass();
}
}
事實是,即使Object
沒有超類, s.getClass().getSuperclass()
也永遠不會返回null
。
盡管我多次調試了該項目,但我不明白為什么會這樣。
第一次運行循環后, s
是一個Class
實例。
s.getClass()
因此總是返回Class.class
,它具有超類。
在這里,您將類分配給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();
}
您想要的是:
public void get(Object s)
{
Class<?> buffer = s.getClass();
while (buffer != null)
{
System.out.println(buffer);
buffer = buffer.getSuperclass();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.