当前位置: 首页 > 知识库问答 >
问题:

从Java的默认包中导入静态类时出错[重复]

钱俊楚
2023-03-14

我试图通过在util.java中定义一个静态方法来缩短system.out.println()。我想利用进一步缩短为print()的util.print()。所以我做了一个静态导入。

java与listofnumbers.java位于同一目录下。当我试图从一个tester类访问writeList()时,我得到以下错误:

import java.io.*;
import java.util.List;
import java.util.ArrayList;
import static Util;

public class ListOfNumbers {
    ...
    ...
    public void writeList() {
    // The FileWriter constructor throws IOException, which must be caught.
        PrintWriter out = null;

        try {
            print("Entered try statement...");
            ...
        } catch (IOException | IndexOutOfBoundsException e){            
            print("Exception thrown: \n" + e.getMessage());
            ...
        }
    }
}

错误:

>> javac Tester.java && java Tester
.\ListOfNumbers.java:4: error: '.' expected
import static Util;
                  ^
.\ListOfNumbers.java:4: error: ';' expected
import static Util;
                   ^
.\ListOfNumbers.java:4: error: cannot find symbol
import static Util;
              ^
  symbol: class Util
.\ListOfNumbers.java:4: error: static import only from classes and interfaces
import static Util;
^
.\ListOfNumbers.java:24: error: cannot find symbol
                        print("Entered try statement...");
                        ^
  symbol:   method print(String)
  location: class ListOfNumbers
.\ListOfNumbers.java:34: error: cannot find symbol
                        print("Exception thrown: \n" + e.getMessage());
                        ^
  symbol:   method print(String)
  location: class ListOfNumbers
6 errors

共有2个答案

白淇
2023-03-14

下面的回答帮助我克服了这个问题!我猜这一定是个窃听器。

无法导入默认包中的Java静态成员!

单于翰飞
2023-03-14

您应该导入方法名

import static Util.print;

如果要从util导入所有静态方法:

import static Util.*;
 类似资料:
  • 问题内容: 我正在使用Eclipse 3.5,并且已经创建了一个具有一些包结构以及默认包的项目。我在默认包中有一个类-Calculations.java,并且我想在任何包中使用该类(例如在中)。当我尝试使用默认软件包中的类时,它给了我一个编译器错误。无法识别默认程序包中的类。问题出在哪里? 我不能将我的课程放在其他任何包中。此类具有一些在Delphi中实现的本机方法。如果我将该类放在任何文件夹中,

  • 问题内容: 我在Entities程序包中有类,但是我仍然想运行默认程序包中的导入内容…我该怎么做? 问题答案: 你不知道 抱歉。 尽管我引用了另一个答案,但是您可以查看ORACLE参考,该参考指出了预期的行为。 我建议将您的东西移动到命名包中。 如果您绝对不能重构,则可以尝试使用反射来访问它。再次,检查上面链接的答案。

  • 我当前的系统(MacOS 10.10.5)配置是: 每次我开始处理一个项目(目前为1.8.0_65)并使用 = 引入的默认导入语句是 虽然我希望它是: 是否有任何配置我可以纠正,或者这是我使用的组合中的一些错误?想知道是什么设置优先于sun包而不是java包? 注意:是否已经回答了像在Eclipse中一样在IntelliJ IDEA中自动导入类的任何方法(或快捷方式)?但是当我键入时得到的选项不包

  • 模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(

  • 问题内容: 静态导入是什么意思,例如: 如何定义这样的软件包?使用静态导入有什么优势? 问题答案: 表示您可以引用静态值而无需使用类名。 例如,考虑以下三个类:

  • 问题内容: 如果要创建组件,似乎可以用很多不同的方式创建类。这些有什么区别?我怎么知道要使用哪个? 我只是假设他们做不同的事情,还是只是语法不同? 如果有人可以给我快速的解释或链接,我将不胜感激。我不想从一个新的框架开始,不知道到底有什么区别。 问题答案: 嗨,欢迎来到React! 我认为您在这里遇到的问题并不是与React特定的,而是与新的ES2015模块语法有关。在创建React类组件时,出于