JDK1.5.0で、デフォルト・パッケージ内のクラスをデフォルト・パッケージ以外のクラスでインポートして利用しようとするとエラーになります。(「インポートされたXXXXは見つかりません」)。これはなぜでしょうか?


Googleで検索してみたところ、JDK1.4以降ではデフォルト・パッケージのクラスをインポートできなくなったという説を見かけましたが、その証拠になるリリースノートなどはあるでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2007/02/01 00:49:26
  • 終了:2007/02/01 14:05:59

回答(1件)

id:quintia No.1

quintia回答回数562ベストアンサー獲得回数712007/02/01 11:01:42

ポイント100pt

互換性に関する文書の中に記述されています。該当箇所にジャンプできるアンカーが無いので、文書内検索して探しだしてください。


http://java.sun.com/javase/compatibility_j2se1.4.html

The compiler now rejects import statements that import a type from the unnamed namespace. Previous versions of the compiler would accept such import declarations, even though they were arguably not allowed by the language (because the type name appearing in the import clause is not in scope). The specification is being clarified to state clearly that you cannot have a simple name in an import statement, nor can you import from the unnamed namespace.


日本語訳

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/compatibility.html

コンパイラは、名前のないネームスペースから型をインポートする import 文を拒否するようになりました。以前のバージョンのコンパイラは、こうした import 宣言を、理論的には言語で許可されていなくても (import 句に現れる型名がスコープ内に存在しないため)、 受け入れていました。仕様の中では、import 文の中に単純名を含めることはできないこと、また名前のないネームスペースからインポートを行うことはできないことが明示されています。


「1.3.x以前で許可されていた」方が、Java言語仕様から逸脱した挙動だということらしいですね。



http://java.sun.com/docs/books/jls/second_edition/html/packages....

7.5.1 Single-Type-Import Declaration

(略)

The TypeName must be the canonical name of a class or interface type

このあたりでしょうか。

id:westfish

なるほど、ばっちりです。

2007/02/01 13:57:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません