如果我們對某個類使用靜態導入,編譯實際類時編譯器是否會爲靜態導入的類生成一個類文件?靜態導入和類文件生成
例:
import static com.x.y.util.B.getIds();
public class A {
...
}
當編譯器編譯類A
,將它產生B
以及類文件?
如果我們對某個類使用靜態導入,編譯實際類時編譯器是否會爲靜態導入的類生成一個類文件?靜態導入和類文件生成
例:
import static com.x.y.util.B.getIds();
public class A {
...
}
當編譯器編譯類A
,將它產生B
以及類文件?
不,導入語句不會導致編譯器生成任何東西。想想看:如果編譯器沒有源代碼,它如何生成類?根據定義,編譯器將源代碼轉換爲可執行代碼(如果是java,則爲字節代碼)。
順便說一句你的例子中靜態導入的語法不正確。你不應該在靜態導入使用()
:
import static com.x.y.util.B.getIds;
當使用關鍵字進口或只是全名是使用某種類型的類。您必須確保在編譯期間,編譯器將這兩個類都放在構建路徑中。
靜態導入允許您訪問導入類的靜態成員。而已。
class Bar {
public static int getID() {
return -1;
}
}
而對於靜態導入
import static Bar.getID;
class Foo {
private void foo() {
int id = getID(); //instead of Bar.getID();
}
}
此導入不好看。另外,如果類「B」在「A」內,則不需要導入它。爲所有類生成類文件,無論它們是靜態的還是非靜態的,聲明的或匿名的。 –