ここに別の質問があります:
package p1;
public class Temp {
public static int x=10;
public static void show(){
System.out.println("hello from show");
}
}
これが私の2番目のファイルのコードです:
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 の規則では、クラスを static にインポートすると、クラス名を使用せずにすべてのメソッドとデータ メンバーにアクセスできるようになります。
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