-1

ここに別の質問があります:

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
4

2 に答える 2

0

パッケージ p1 のすべての静的クラスをインポートしようとしていますが、Temp は静的ではないため、インポートされません。非静的インポートを使用してください。

于 2013-10-09T14:01:00.743 に答える