问题描述
为什么 Eclipse 在导入类型时采用细粒度的方法?在 C# 中,我习惯于使用 System.Windows.Controls"并完成它,但 Eclipse 更喜欢单独导入我引用的每个小部件(使用 Ctrl+Shift+O 快捷方式).如果我知道我需要多个类型,那么导入整个命名空间有什么害处吗?
Why does Eclipse take a fine grained approach when importing types? In C# I'm used to things like "using System.Windows.Controls" and being done with it, but Eclipse prefers to import each widget I reference individually (using the Ctrl+Shift+O shortcut). Is there any harm to importing an entire namespace if I know I'll need multiple types in it?
推荐答案
通配符包导入可能造成的唯一危害是,如果多个包中存在多个同名类,则会增加命名空间冲突的机会.
The only harm that wildcard package imports can cause is an increased chance of namespace collisions if there are multiple classes of the same name in multiple packages.
例如,我想在 AWT 应用程序中使用 Java Collections Framework 的 ArrayList 类进行编程,该应用程序使用 List GUI 组件来显示信息.举个例子,假设我们有以下内容:
Say for example, I want to program to use the ArrayList class of the Java Collections Framework in an AWT application that uses a List GUI component to display information. For the sake of an example, let's suppose we have the following:
// 'ArrayList' from java.util
ArrayList<String> strings = new ArrayList<String>();
// ...
// 'List' from java.awt
List listComponent = new List()
现在,为了使用上述内容,必须至少导入这两个类:
Now, in order to use the above, there would have to be an import for those two classes, minimally:
import java.awt.List;
import java.util.ArrayList;
现在,如果我们在包 import 中使用通配符,我们会得到以下内容.
Now, if we were to use a wildcard in the package import, we'd have the following.
import java.awt.*;
import java.util.*;
但是,现在我们有一个问题!
However, now we will have a problem!
有一个 java.awt.List 类和一个 java.util.List,所以引用 List 类会很模糊.如果我们想消除歧义,就必须使用完全限定的类名来引用 List:
There is a java.awt.List class and a java.util.List, so referring to the List class would be ambiguous. One would have to refer to the List with a fully-qualified class name if we want to remove the ambiguity:
import java.awt.*;
import java.util.*;
ArrayList<String> strings = new ArrayList<String>();
// ...
// 'List' from java.awt -- need to use a fully-qualified class name.
java.awt.List listComponent = new java.awt.List()
因此,在某些情况下,使用通配符包 import 可能会导致问题.
Therefore, there are cases where using a wildcard package import can lead to problems.
这篇关于Eclipse/Java - 导入 java.(namespace).* 有害吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)