[英]static import user define package in other package in java
這是另一個問題:
package p1;
public class Temp {
public static int x=10;
public static void show(){
System.out.println("hello from show");
}
}
這是我的第二個文件的代碼:
package p2;
import p1.*;
import static java.lang.System.*;
class StaticImport {
public static void main(String[] args) {
System.out.println(Temp.x);
Temp.show();
out.println(Temp.x + "hello");
}
}
現在該程序正在運行,輸出為:
10
hello from show
10hello
我嘗試將用戶定義的包導入其他包,並且設置了我的類路徑。 Java規則說,當使用import靜態類時,無需使用類名就可以訪問所有方法和數據成員。
package p2;
import static p1.Temp;
import static java.lang.System.*;
class StaticImport {
public static void main(String[] args) {
System.out.println(x);
show();
out.println(x + "hello");
}
}
我得到這個錯誤。 為什么不能將用戶定義的程序包導入其他程序包?
C:\java\static_import>javac -d . StaticImport.java
StaticImport.java:3: error: cannot find symbol
import static p1.Temp;
^
symbol: class p1
StaticImport.java:3: error: static import only from classes and interfaces
import static p1.Temp;
^
StaticImport.java:8: error: cannot find symbol
System.out.println(x);
^
symbol: variable x
location: class StaticImport
StaticImport.java:9: error: cannot find symbol
show();
^
symbol: method show()
location: class StaticImport
StaticImport.java:10: error: cannot find symbol
out.println(x + "hello");
^
symbol: variable x
location: class StaticImport
5 errors
使用import static p1.Temp.*;
代替。 您要導入的靜態對象不在p1
包中,而是在p1.Temp
類中。
評論后編輯:
在C:\\java\\static_import
文件夾中,您必須具有:
Temp.java
文件的p1
文件夾; StaticImport.java
文件的p2
文件夾。 在StaticImport.java
,替換import static p1.Temp;
通過import static p1.Temp.*;
。
最后,使用命令行:
cd C:\java\static_import
javac -d . p2/StaticImport.java
java p2/StaticImport
輸出必須是:
10
hello from show
10hello
您正在嘗試將所有靜態類導入包p1中,但是Temp不是靜態的,因此也不會導入。 只需使用非靜態導入即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.