Java中用import導入類和用Class方法加載類有什么區別?
import僅僅包含導入操作,并不包含將字節碼文件加載進內存這一動作,將字節碼文件加載進內存是后續的實例化操作完成的。例如通過import導入了一堆包和類,但是后續什么都沒用(沒用實例化),那么導入的東西是不會被加載進內存的。而且import是編譯期的,如果你在后續代碼中沒有使用到你導入的內容,那么import語句甚至不會編譯和執行。查看字節碼文件可以看出,import的作用就是對你程序中要用到(實例)的東西進行署名(signature),當程序運行的時候好知道你實例化的對象的類的字節碼文件去哪里找。
而Class.forName方法包含的動作是:根據給出的全類名(方法的參數)找到對應的字節碼文件,并將字節碼文件通過ClassLoader加載進內存中生成Class類對象(方法的返回值就是Class類對象)。
這些就是二者的區別了。