java中其他包中的静态导入用户定义包

java中其他包中的静态导入用户定义包,java,jakarta-ee,Java,Jakarta Ee,还有一个问题: 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 {

还有一个问题:

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

使用
导入静态p1.Temp.*取而代之。您尝试导入的静态对象不在
p1
包中,而是在
p1.Temp
类中

评论后编辑:

C:\java\static\u import
文件夹中,您必须:

  • 包含
    Temp.java
    文件的
    p1
    文件夹
  • 包含
    StaticImport.java
    文件的
    p2
    文件夹
StaticImport.java
中,替换
import static p1.Temp行方式
导入静态p1.Temp.*

最后,使用命令行:

cd C:\java\static\u导入
javac-d。p2/StaticImport.java
JavaP2/StaticImport
输出必须是:

10
你们好,节目组
你好

您正在尝试导入包p1中的所有静态类,但是Temp不是静态的,因此它不会被导入。只需使用非静态导入。

只有类型可以通过
静态导入,而不是包导入。您好,谢谢您的回答,但在更改代码后,导入静态p1.Temp.*;程序不工作,请给我一些例子please@anil“不工作”是什么意思?在
StaticImport.java
文件中,替换了
import static p1.Temp行方式
导入静态p1.Temp.*,对吗?@anil“程序不工作”不是很有描述性。请说明发生了什么错误。抱歉,更改导入静态p1.Temp;不working@anil什么不起作用?您收到了什么错误消息?如果你想让我们帮助你,你必须提供更多的细节。