gpt4 book ai didi

java - .getClass().getName() 方法为何适用于 int 类型?

转载 作者:行者123 更新时间:2023-12-01 19:33:28 24 4
gpt4 key购买 nike

有人告诉我,诸如 int 这样的基本类型没有方法。 .getClass().getName() 在用于 int 类型的变量时如何工作并返回包装类“整数”?这是自动拳击的例子吗?

重要提示:这似乎只在将 int 变量传递到泛型类中时才对我有用。然后从 main 方法调用泛型类中的方法。

我正在使用这个通用类:

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());
}

The output is : java.lang.Integer

有人可以解释一下这个过程的内部运作吗?

这样的事情是行不通的:

public static void main(String args[]) {

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

最佳答案

通用类型参数,例如T,不能是基元。对于原始类型,您可以使用相应的包装类。更具体地说,T 不能是 int

就您而言,编译器会在 new gen(i ) 调用。

参见:Why don't Java Generics support primitive types?

<小时/>

注释 1: gennew gen原始泛型,因为您省略了类型参数。不要使用原始泛型。此外,如果你忽略它们又有什么意义呢?

注2:Java命名约定是类名以大写字母开头,因此类应该命名为Gen,而不是gen

关于java - .getClass().getName() 方法为何适用于 int 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58684999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com