人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: westfish
●カテゴリ:コンピュータ
✍キーワード:Google XXXX インポート エラー クラス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● quintia
●100ポイント

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


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

このあたりでしょうか。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ