.getClass()。getName()方法如何与int类型一起使用?

有人告诉我,诸如['green','black'] 之类的原始类型没有方法。 int 在类型为.getclass().getName()的变量上使用并返回包装类“ int”时如何工作?这是自动装箱的例子吗?

重要提示:仅当Integer变量传递到泛型类中时,这才对我有用。然后从main方法调用泛型类中的方法。

我正在使用这个通用类:

int
  

输出为:java.lang.Integer

有人可以解释一下此过程的内部原理吗?

类似的事情将无法正常工作

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());
}
daiwang2 回答:.getClass()。getName()方法如何与int类型一起使用?

通用类型参数,例如T,不能是原始。对于基本类型,请使用相应的包装器类。更具体地说,T不能为int

在您的情况下,编译器会在int调用中为您自动将Integer的值new gen(i)装箱为gen

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


注1: new genGen原始泛型,因为省略了type参数。不要使用原始的泛型。此外,如果您仍然忽略它们又有什么意义呢?

注释2: Java命名约定是为了使类名以大写字母开头,因此类应命名为gen,而不是data.frame

本文链接:https://www.f2er.com/3169984.html

大家都在问