簡體   English   中英

.getClass().getName() 方法如何與 int 類型一起使用?

[英]How come the .getClass().getName() method works with type int?

有人告訴我,諸如int之類的原始類型沒有針對它們的方法。 .getClass().getName()在用於int類型的變量時如何工作並返回包裝器 class “ Integer ”? 這是自動裝箱的一個例子嗎?

重要提示:這似乎只在將int變量傳遞給通用 class 時才對我有用。 然后從主方法調用通用 class 中的方法。

我正在使用這個通用的 class:

public class gen< T > {

    private T thing;

    public gen(T thing) {
        this.thing = thing;
    }

    public String varType() {
        return thing.getClass().getName();
    }
}

public class Driver() {
    int i = 5;
    gen g = new gen(i);
    System.out.println(g.getType());
}

output為:java.lang.Integer

有人可以解釋這個過程的內部運作嗎?

這樣的事情是行不通的:

public static void main(String args[]) {

    int i = 5;
    i.getClass().getName();
}

泛型類型參數,例如T ,不能是原語 對於原始類型,您使用相應的包裝器 class。 更具體地說, T不能是int

在您的情況下,編譯器在new gen(i)調用中為您自動int值裝箱為Integer

請參閱:為什么 Java Generics 不支持原始類型?


注意 1: gennew gen原始的 generics ,因為您省略了 type 參數。 不要使用原始 generics。 此外,如果你還是忽略它們又有什么意義呢?

注 2: Java 命名約定是 class 名稱以大寫字母開頭,因此 class 應命名為Gen ,而不是gen

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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