与package和import语句混淆,包括默认包

时间:2014-02-14 12:20:05

标签: java android eclipse

我对eclipse IDE中的术语及其用法感到困惑。

据我了解,您可以使用import关键字来引用一组名为packages的类/ java文件中的特定类/ java文件。您还可以通过在import语句末尾结束使用通配符修饰符来引用整组类/ java文件。那么为什么要在java src文件的顶部创建package语句而不必进行导入呢?

例如:

文件夹结构:myapp> graphics> .class1,.class2

而不是这样做:import myapp.graphics.*

我们可以做到这一点吗?:package myapp

所以乳清甚至有import关键字?难道你不能只使用包myapp并引用类,例如class1 example = class1();

其次,我尝试删除package com.example.myapp,然后只使用import myapp.graphics.*导入类,但它给出了一个错误,指出"" does not match the expected package com.example.myapp。其中一个修复方法是move MainActivity.java to a default package。我选择了该选项并将其移至默认包中,然后我可以使用import myapp.graphcis.*;语句,同时省略package myapp.graphics语句而没有任何错误。

我很困惑。另外,什么是deauflt包?我在某处读到使用默认包是不好的做法。为什么呢?

感谢。

2 个答案:

答案 0 :(得分:0)

根据oracle:

  

包是一个命名空间,用于组织一组相关的类和   接口。从概念上讲,您可以将包视为类似于   您计算机上的不同文件夹。您可以将HTML页面保持为一个   文件夹,另一个中的图像,以及另一个中的脚本或应用程序。   因为用Java编程语言编写的软件可以   它由数百或数千个单独的类组成   通过放置相关课程来保持井井有条的感觉   接口到包中。

因此,您可以将包视为组织者,与进口无关。

默认包根本没有包。当您将该字段留空时,Eclipse会向您发出警告。使用它是不好的做法,因为

  

使用默认包可能会创建命名空间冲突。想象一下,您正在创建一个包含MyClass类的库。有人用   你的图书馆在他的项目中也有一个MyClass课程   默认包。编译器应该怎么做? Java中的包是   实际上是一个完全标识您的项目的命所以这是   在现实世界的项目中不使用默认包很重要。

Why shouldn't we use the (default)src package?

答案 1 :(得分:0)

套餐 - 班级所在的位置。它用于构建完全限定的类名。

导入 - 用于合并预先存在的类,通过使用它,您可以利用它们的功能。

默认包 - 直接位于src文件夹下的位置,例如:src \ NoPackage.java

例如,如果 NoPackage.java 包含import com.assertcheck.AssertTesting; ,则 AssertTesting NoPackage 下的引用强>上课。

但是,在 AssetTesting 课程中,您无法导入/使用 NoPackage