我熟悉Java,但我仍然想弄清楚一些概念。
说我有 FileA.java 和 FileB.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}
所以我有以下问题,如果有人能澄清,我会很感激,因为我承认我对这个话题一无所知:
答案 0 :(得分:3)
这在Java中可行吗?
没有
这是一个好主意/最佳做法吗?是/否为什么?
如果不采用类似预处理器之类的东西,这是不可行的......这使得它成为非Java解决方案,绝对不是“最佳实践”。
如果这不是一个好习惯,那么你如何处理每个使用相同的java文件的相同导入头?
我通过使用IDE处理它,当我不想看它时,它允许我隐藏import语句。即使在我使用愚蠢(-ish)文本编辑器编写Java的过去,我也从未发现这是一个重要的问题。 (但话又说回来,经过30多年的专业编程和20多种不同的编程语言,我学会了容忍轻微的句法烦恼。)
如果你早些时候看看詹姆斯·戈斯林和詹姆斯·戈斯林的Java White Paper。 Henry McGilton,你会发现排除#include(和typedef)的优点之一如下:
“通过删除所有这些包袱,Java变得非常无上下文。程序员可以阅读和理解代码,更重要的是,更快更容易地修改和重用代码。”
换句话说,您不必浏览包含文件的迷宫,以确定主源文件中的给定标识符所指的内容。该信息都在类源文件中(假设您不使用*
导入...我不这样做。)
答案 1 :(得分:0)
可悲的是,这在Java中是行不通的。