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.");
   }
}

编译器是否只是忽略了额外的 import 语句?

4

1 回答 1

13

是的,编译器会认为它是多余的,由JLS 7.5.2指定:

同一编译单元中的两个或多个按需类型导入声明可以命名相同的类型或包。除了其中一个声明之外,所有声明都被认为是多余的;效果就好像该类型只导入了一次。

笔记:

  • "type-import-on-demand" 是一个包导入:import somepackage.*;
  • 这同样适用于单一类型导入“如果两个单一类型导入声明 [...] 尝试导入 [...] 相同类型,则 [...] 重复声明将被忽略。”
于 2012-08-28T14:12:49.683 回答