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を使用して対処しています。ダム(-ish)テキストエディタを使用してJavaを作成した昔でも、これが重大な問題であることに気付くことはありませんでした。(しかし、繰り返しになりますが、30年ほどのプロのプログラミングと20年ほどの異なるプログラミング言語の後で、私はマイナーな構文上の苛立ちに耐えることを学びました。)


JamesGoslingとHenryMcGiltonによるこの初期のJavaホワイトペーパーを見ると、#include(およびtypedef)を除外する利点の1つは次のとおりです。

「この手荷物をすべて取り除くことで、Javaは非常に文脈自由になります。プログラマーはコードを読んで理解でき、さらに重要なことに、コードをより速く簡単に変更して再利用できます。」

つまり、メインソースファイル内の特定の識別子が何を参照しているかを把握するために、インクルードファイルの迷路をナビゲートする必要はありません。その情報はすべてクラスソースファイルにあります(*インポートを使用しないと仮定します...私は使用しません)。

于 2012-07-28T04:35:42.683 に答える
0

残念ながら、これは Java では実行できません。

于 2012-07-28T04:10:15.963 に答える