ClassNotFoundException with Class.forName(“ int”)

时间:2019-01-01 18:20:37

标签: java

请注意,我不能让forName()专门与“ int”一起使用。 另一方面,它与在与

相同的程序包中创建的类也可以正常工作
Class.forName("mypackage.dummyclass")

与完全限定的名称有关吗?我已经尝试过“ java.lang.int”和“ java.lang.integer”,但是没有帮助。

5 个答案:

答案 0 :(得分:3)

int是Java中的原始类型,而不是类,因此请尝试使用java.lang.Integer(这不是完全相同的东西,但可互换用于许多用途)

答案 1 :(得分:2)

获取与基本类型(例如Class)关联的int对象的正确语法是

int.class

同样,对于其他基本类型,请使用byte.classlong.classboolean.class等。

虽然intjava.lang.Integer之间存在特殊的关系,但是int.classInteger.class并不相同。

请注意,您不能将Class.forName与原始类型名称一起使用

the Java tutorial中所述:

  

Class.forName()
  如果一个类的全限定名称可用,则可以使用静态方法Class.forName()获得相应的类。这不能用于基本类型。

在同一教程中,关于如何对原语使用.class语法:

  

.class语法
  如果类型可用但没有实例,则可以通过在类型名称后附加“ .class”来获得Class。这也是获取原始类型的Class的最简单方法。

     

boolean b;
   Class c = b.getClass(); // compile-time error
   Class c = boolean.class; // correct

答案 2 :(得分:1)

Class.forName用于类对象,而int是原始数据类型。

改为尝试java.lang.Integer

答案 3 :(得分:0)

int是原始数据类型,而不是类。 Integer类可用于int。因此,您应该使用“整数”。

答案 4 :(得分:0)

尝试使用java.lang.integer(使用大写字母java.lang.Integer)来代替I


上面的方法将起作用,因为Class.forName()试图创建一个以String arg形式传递的完整类名的对象。

java.lang.Integer-这是一堂课

int-这不是一门课。它是原始数据类型。因此,失败了。