5

このコードを試してください。コンパイルします。

import java.io.*;
import java.io.*;
import java.io.*;

import java.util.*;
import java.util.*;
import java.util.*;

import javax.swing.*;
import javax.swing.*;
import javax.swing.*;


public class ImportMultipleTimes
{
   public static void main(String[] args)
   {
      System.out.println("3 packages imported multiples times in the same class.");
   }
}

コンパイラは単に追加のインポートステートメントを無視しますか?

4

1 に答える 1

13

はい、JLS 7.5.2で指定されているように、コンパイラによって冗長と見なされます。

同じコンパイル単位内の2つ以上のtype-import-on-demand宣言で、同じタイプまたはパッケージに名前を付けることができます。これらの宣言の1つを除くすべては、冗長であると見なされます。その効果は、そのタイプが1回だけインポートされたかのようになります。

ノート:

  • 「type-import-on-demand」はパッケージのインポートです。import somepackage.*;
  • 同じことがsingle-type-importにも当てはまります:「2つのsingle-type-import宣言[...]が同じタイプをインポートしようとすると、[...]重複した宣言は無視されます。」
于 2012-08-28T14:12:49.683 に答える