有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java(类<?>)和getClass()之间有什么区别?

考虑这两条线:

return loadMethod.invoke(botScriptLoader, file.getName().replaceFirst("\\.class", "")).getClass();

return (Class<?>) loadMethod.invoke(botScriptLoader, file.getName().replaceFirst("\\.class", ""));

当我使用第一行运行我的应用程序时,它不能按预期工作。当我使用第二行运行我的应用程序时,它确实能按预期工作。我不认为这背后的代码是相关的,因为我的观点是,这两行之间的行为是不同的。他们为什么表现不同?getClass()返回Class,typecast将对象强制转换为一个类——因此最终结果应该是相同的。然而,两者的行为却不同


共 (1) 个答案

  1. # 1 楼答案

    loadMethod似乎已返回Class类型的对象。所以当你打电话给getClass()的时候,它给你的是java.lang.Class.class,而不是你加载的东西。强制转换加载的内容不会更改基础对象,即文件名的类实例

    也就是说,如果要返回Integer类型的类对象,可以:

    return Integer.class;

    你的第一句话是

    return Integer.class.getClass();

    因此,您得到了表示类型类本身的类对象,而不是整数类型