簡體   English   中英

靜態導入用戶定義其他Java包中的包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM