【问题标题】:Error importing a static class from default package in java [duplicate]从java中的默认包导入静态类时出错[重复]
【发布时间】:2016-11-06 21:00:17
【问题描述】:

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

Util.java 与 ListOfNumbers.java 位于同一目录下。当我尝试从测试器类访问 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

【问题讨论】:

  • 看起来不像回答我的问题。您能否仔细查看当前上下文以及您“可能”标记为重复的问题?
  • 好吧,如果您阅读了答案以及答案中标记的后续问题,应该可以消除您的疑问。
  • 并且只是为了记录:使用默认包是不好的做法,真的不是你应该做的事情。类的名称应该说明它们“是什么”;从这个意义上说,“Util”也不是一个很好命名的例子。
  • @Jägermeister:有效积分并同意!我正在尝试实施和学习一些基础知识和实践。但是,在使用默认包名称时,我会牢记这一点。干杯!

标签: java import static


【解决方案1】:

你应该导入方法名

import static Util.print;

如果你想从 Util 中导入所有的静态方法:

import static Util.*;

【讨论】:

  • 嗨,Rajesh,谢谢分享.. 我已经按照你的建议做了。现在得到以下错误.. \ListOfNumbers.java:4: error: cannot find symbol import static Util.print; ^ 符号:class Util .\ListOfNumbers.java:4:错误:仅从类和接口静态导入
  • 为你的类定义一个包。无法从默认包进行静态导入 bugs.java.com/bugdatabase/view_bug.do?bug_id=4989710
【解决方案2】:

下面的答案帮助我克服了这个问题!猜猜这一定是一个错误。

Java static member from default package cannot be imported!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 2015-11-14
    • 2019-05-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多