抽象相同的导入调用由几个java文件使用

时间:2012-07-28 04:04:04

标签: java include

我熟悉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}

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

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

2 个答案:

答案 0 :(得分:3)

  

这在Java中可行吗?

没有

  

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

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

  

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

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


如果你早些时候看看詹姆斯·戈斯林和詹姆斯·戈斯林的Java White Paper。 Henry McGilton,你会发现排除#include(和typedef)的优点之一如下:

  

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

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

答案 1 :(得分:0)

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