【问题标题】:Java: Importing Library to Multiple ClassesJava:将库导入多个类
【发布时间】:2013-12-04 04:06:26
【问题描述】:

我一直在 StackOverflowGoogle 上寻找答案。在问之前我已经完成了我的工作。

如果我将一个库导入到一个 Java 程序中并希望它在不同的类中可用,我需要手动将它导入到每个类中吗?某种方式可以在全球范围内做到这一点?

到目前为止,我一直在做我在下面展示的示例,但感觉有点“笨拙”并且不是最佳的:

主程序:

import java.util.Scanner;
public class MainProgram
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        Gets getIn = new Gets();

        System.out.print("Enter a string: ");
        String fromKey = getIn.first(keyboard);
        System.out.println(fromKey);
    }
}

获取.java:

import java.util.Scanner;

public class Gets
{
    public String first(Scanner keyboard)
    {
        String result = keyboard.nextLine();
        return result;
    }
}

如上所述,这感觉很笨拙。

有什么方法可以让这项工作只需将库导入 MainProgram.java 文件并将它们导入到每个调用的类(显然类型仍然需要在方法中提及,但那是次要的)?

如果这些类随后在另一个不导入相同库的程序中使用,我可以看到出现的问题,但是如果有适当的注释,这似乎很小。

【问题讨论】:

    标签: java oop import libraries


    【解决方案1】:

    您必须为每个类文件导入它。

    注意“文件”:您可以在一个文件中包含多个类,但您只需导入一次。

    【讨论】:

    • 我对你的意思有点困惑,你所指的“文件”是我拥有的各个类文件?
    • 我猜他的意思是您的 Gets 将是一个私有类,并且将与您的 MainProgram 类驻留在同一个 java 文件中
    • 一个 .java 文件只能有 1 个公共类。但它可以有多个没有访问器的类 (class X) 或私有类 (private class Y) 等。如果它们在同一个文件中,则不必为每个类导入。
    【解决方案2】:

    您必须导入到每个班级。

    但是,使用像 Eclipse 这样的现代 IDE 非常简单,我几乎没有注意到它。

    只要开始在方法/声明/无论你在哪里使用它,它应该会弹出一个自动完成类型的东西(Ctrl+空格 强制它)这会让你选择你想要的导入。

    【讨论】:

    • 我想对此表示赞同,因为您正在尝试增加价值。但是这篇文章(问题)的大部分内容应该是 cmets。并且需要更多细节。 LMK 如果你可以清理它并添加一些细节。我很乐意投票。
    • 谢谢,将研究 Eclipse!我目前只是在学习时使用 vi,但此时猜测像 Eclipse 这样的 IDE 会有所帮助。
    • @DaveA 我调整了一些
    • thingey - 太技术性了!
    • 好多了。我希望我能给它+4,因为现在我相信这是 OP 的最佳答案。
    【解决方案3】:

    是的,您必须为每个班级导入它。就像 Taylor 说的,使用 eclipse 会更容易。 eclipse 中的一个快捷方式是写出扫描仪代码行,当您收到读取下划线错误时,按 ctrl-shift-o '组织进口'。这将自动按字母顺序在文件顶部为您输入导入内容。

    【讨论】:

      【解决方案4】:

      是的,您必须为要使用这些库的每个类导入它

      【讨论】:

        【解决方案5】:

        正如其他人所说,You have to import it for every class that you want to use those libraries, 但是,您可能想查看一些为您封装此逻辑的继承(超类)。

        例如MyScanner extends Scanner

        在您的所有类中都使用 MyScanner,并且它具有仅返回结果的方法

        例如List<String> getAllLines ();

        【讨论】:

        • 谢谢!我将更多地研究封装的这方面!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-10
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多