2017-02-15 5 views
0

Javaの学習中に、&がコンパイルされたこのコードを試してみました。コンパイラが何らかのエラーを起こさなかった理由を誰にも教えてください。 java.util> Scannerも含まれている完全なパッケージをインポートしたので、Scannerが既にutilパッケージに定義されているというエラーはありません。&ここで再定義しようとしていますか?これは完全にnoobのの質問のように見えるので、私はそれを聞いて、より良いと考えられ、このフォーラムに似疑いがなかった場合 JavaCompilerはJavaクラスの再定義時にエラーをキャッチしませんでした。

import java.util.*; 

class Scanner 
{ 
    public static void main(String... args) 
    { 
     Scanner c = new Scanner(); 
    } 
} 

私のJavaの基本

はとても親切に負担が非常に明確ではありません。

+1

名前は、オンデマンドインポートでインポート何よりも優先されます。 'java.util.Scanner'を明示的にインポートした場合はエラーになります。 –

+0

java.util.Scannerのインポートを追加すると、使用されていないとマークされています。 – c0der

+0

ええ、コンパイルエラーが発生します。私はちょうどパッケージ全体をインポート中になぜそれをしないのか知りたいと思っていました。 – WhiteSword

答えて

-1

クラスはその名前だけでなくパッケージによっても定義されます。あなたのケースでは

あなたは2つの異なるクラスがあります。

  • をjava.util.Scanner
  • your.package.Scanner(申し訳ありませんが、あなたのパッケージラインはあなたのコードの一部ではない)

コンパイラの場合、これらのクラスは異なるため、コンパイルエラーが表示されないのはこのためです。コード例と長い答え、可能なユースケースについては

は、ここを見て:現在のコンパイル単位でImporting two classes with same name. How to handle?

関連する問題