我最近开始使用Eclipse IDE并且在很多地方读过一个不应该使用默认(src)包并创建新包的人。 我只是想知道背后的原因。
答案 0 :(得分:13)
使用默认包可能会创建命名空间冲突。想象一下,您正在创建一个包含MyClass
类的库。有人在他的项目中使用你的库,并且在他的默认包中也有一个MyClass
类。编译器应该怎么做? Java中的包实际上是一个完全标识您的项目的命名空间。因此,在现实世界的项目中不使用默认包很重要。
答案 1 :(得分:4)
最初,它旨在确保不同Java代码之间没有冲突。
因为Java本来是在任何地方运行,并且通过网络运行(意味着它可能从Sun,IBM甚至Joe Bloggs和Dodgy Software Company Pty Ltd获得),事实是我拥有paxdiablo.com
(我实际上并没有让我假装为了这个答案而这么做)意味着调用我的所有代码com.paxdiablo.blah.blah.blah
并且不会干扰其他任何人都是安全的,除非他们在某种程度上有精神缺陷并使用我的命名空间: - )
来自chapter 7, "Packages", of the Java Language Spec:
程序被组织为一组包。每个包都有自己的类型名称,这有助于防止名称冲突。
我实际上通常首先使用默认包,只将它移动到一个真正的包(如果它可以很容易地用Eclipse IDE完成),如果它存活的时间足够长,可以发布到野外。
答案 2 :(得分:1)
Java使用该包作为区分类的方法。通过使用包,您可以拥有一个org.example.Something类和一个org.example.extended.Something类,并且能够区分它们,即使它们都被命名为Something。由于它们的包不同,您可以在同一个项目中使用它们。
答案 3 :(得分:1)
通过声明一个包,您可以定义自己的命名空间(对于类)。这样,如果你有两个相同的类使用不同的包名(命名空间)将区分你想要使用的类。
答案 4 :(得分:1)
我能想到的主要原因是:
答案 5 :(得分:0)
从Java的角度来看,有两个一般的开发/部署生命周期,你可以使用ant来构建和部署,或者使用maven生命周期。这两个生命周期都在本地目录中查找源代码和资源,在maven的情况下,在本地目录或网络中查找定义的存储库。
关键是,当您设置项目,进行开发和最终部署时,您希望构建一个可移植的项目结构,而不依赖于IDE,即。您的项目可以使用任一构建环境构建和部署。如果您过度依赖Eclipse框架来提供类变量,编译路径等,您可能会遇到项目只使用该配置构建和部署的问题,并且可能无法移植到其他开发人员环境,可以这么说。