名称空间是什么?用法怎么样?

时间:2010-09-01 07:57:44

标签: namespaces clojure

  1. 命名空间的目的是什么?

  2. 更重要的是,它们是否应该用作java中的对象(具有数据和功能并尝试实现封装的东西)?这个想法是远远不够的? :)

  3. 还是应该在java中用作包?

  4. 或者它们应该更普遍地用作模块系统还是什么?

4 个答案:

答案 0 :(得分:9)

答案 1 :(得分:2)

Java中的包有自己的命名空间,它提供了类的逻辑分组。它还有助于防止命名冲突。例如,在java中,您将找到java.util.Date和java.sql.Date - 两个具有相同名称的不同类由其命名空间区分。如果您尝试将两者都导入到java文件中,您将看到它不会编译。至少有一个版本需要使用其显式命名空间。

答案 2 :(得分:1)

从语言独立的角度来看,名称空间是一种隔离事物的方式(即封装在一种感觉中)。这是一个更通用的概念(例如,请参阅xml命名空间)。您可以通过多种方式“创建”命名空间,具体取决于您使用的语言:包,静态类,模块等。所有这些都为它们包含的对象/数据/函数提供名称空间。这样可以更好地组织代码,隔离功能,实现更好的代码重用和适应性(作为封装) 正如“禅宗的Python”所述,“命名空间是一个很棒的主意 - 让我们做更多的事情!”。

答案 3 :(得分:0)

将它们视为您班级的容器。如果您有一个用于构建字符串的帮助程序类,并且您希望在业务层中使用它,则可以使用名称空间,例如MyApp.Business.Helpers。这允许您的类包含在敏感位置,因此当您或其他引用您的代码的其他人想要使用它们时,可以轻松地找到它们。再举一个例子,如果你想使用一个SQL连接助手类,你可能会使用类似的东西:

MyApp.Data.SqlConnectionHelper sqlHelper = new MyApp.Data.SqlConnectionHelper();

实际上,您将使用“using”语句,因此您不需要完全限定名称空间来声明变量。