簡體   English   中英

Object.getClass()。getSuperclass()不返回null?

[英]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.classgetSuperclass返回Object.class因此循環條件的值為true。

然后將s分配給Object.class

s = s.getClass().getSuperclass();

誰的班級是Class.class並且具有超類。 無限重復廣告。

為該類使用其他變量。

Class<?> cls = s.getClass().getSuperclass();
while(cls != null) {
    cls = cls.getSuperclass();
}

SLaks解釋了為什么您的代碼無法正常工作

您想要的是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM