1

我熟悉Java,但我仍在尝试弄清楚一些概念。

假设我有FileA.javaFileB.java。两个文件在文件头使用相同的导入调用,例如:

FileA.java:

import java.util.Scanner;
import java.io.*;
{some code}

FileB.java

import java.util.Scanner;
import java.io.*;
{some code}

我在其他语言中看到,当您有多个源代码文件使用的公共库时,您将其抽象为一个共享文件,然后您可以在源代码文件中调用该文件,从而有助于减少维护并且必须重新键入它们几个次。因此,对于上面的示例,我们可以执行以下操作:

Common.lib:

import java.util.Scanner;
import java.io.*;

FileA.java:

include Common.lib;
{some code}


FileB.java:
include Common.lib;
{some code}

所以我有以下问题,如果有人能澄清一下,我将不胜感激,因为我承认我对这个话题一无所知:

  1. 这在Java中可行吗?
  2. 这是一个好主意/最佳实践吗?是/否 为什么?
  3. 如果这不是一个好习惯,那么你如何处理必须为每个使用相同的 java 文件键入相同的导入头?
4

2 回答 2

3

这在Java中可行吗?

不。

这是一个好主意/最佳实践吗?是/否 为什么?

如果不求助于预处理器之类的东西,这是不可行的……这使它成为非 Java 解决方案,绝对不是“最佳实践”。

如果这不是一个好习惯,那么你如何处理必须为每个使用相同的 java 文件键入相同的导入头?

我使用 IDE 来处理它,该 IDE 允许我在不想查看导入语句时隐藏它们。即使在过去我使用哑(-ish)文本编辑器编写 Java 时,我也从未发现这是一个重大问题。(但话又说回来,经过 30 多年的专业编程和 20 多年不同的编程语言,我学会了容忍轻微的句法刺激。)


如果您查看 James Gosling 和 Henry McGilton 的早期Java 白皮书,您会发现排除 #include(和 typedef)的优势之一如下:

“通过消除所有这些包袱,Java 变得非常无上下文。程序员可以阅读和理解代码,更重要的是,可以更快、更轻松地修改和重用代码。”

换句话说,您不必浏览迷宫般的包含文件来找出主源文件中的给定标识符所指的内容。这些信息都在类源文件中(假设您不使用*导入......我不使用)。

于 2012-07-28T04:35:42.683 回答
0

可悲的是,这在 Java 中是不可行的。

于 2012-07-28T04:10:15.963 回答