猿问

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

有人告诉我,诸如此类的原始类型int没有方法。.getClass().getName()当用于类型变量int并返回包装类“ ”时,它是如何工作的Integer?这是自动拳击的例子吗?


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

}

输出是:java.lang.Integer


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


像这样的事情是行不通的:


public static void main(String args[]) {


    int i = 5;

    i.getClass().getName();

}


浮云间
浏览 84回答 1
1回答

慕桂英4014372

例如,通用类型参数T不能是原语。对于原始类型,您可以使用相应的包装类。更具体地说,T不能int。在您的情况下,编译器会在调用中自动将值装箱为intan 。Integernew gen(i)注 1: gen和new gen是原始泛型,因为您省略了类型参数。不要使用原始仿制药。再说了,如果你忽略它们又有什么意义呢?注2: Java命名规范是类名以大写字母开头,所以类应该命名为Gen,而不是gen。
随时随地看视频慕课网APP

相关分类

Java
我要回答