【问题标题】:Should a java package have only one public class?java包应该只有一个公共类吗?
【发布时间】:2013-11-23 17:29:41
【问题描述】:

我厌倦了创建一个包含一个公共类和一个包含多个公共类的包,然后通过另一个包导入它们,两次程序都正常工作。我了解其中的区别,首先我只能使用一个公共类的方法,但该类可以使用其包中的其他类,当更多类是公共的时,我可以通过外星人包直接访问所有这些类。

现在当我们导入 java.util.Scanner 时,我们导入 java.util.ArrayList 这不是同一个包吗?当我们用一个公共类导入我们的包时,它只显示一个公共类。那意味着java.util有多个公共类,还是?

还有什么是java。意思是,我的包和 java 库包有区别吗?

【问题讨论】:

  • 当您为 Java 创建源代码文件时,它通常被称为编译单元(有时是翻译单元)。每个编译单元必须有一个以 .java 结尾的名称,并且在编译单元内部可以有一个必须与文件同名的公共类(包括大写,但不包括 .java 文件扩展名)。每个编译单元只能有一个公共类;否则,编译器会报错。
  • 如果该编译单元中还有其他类,则由于它们不是公共的,因此它们对包外的世界是隐藏的,并且它们包含主要公共类的“支持”类。那是布鲁斯·埃克尔的形式。这是否仅仅意味着每个公共类都会有自己的文件,而非公共类不会?
  • @StefS:现在对嵌套类(即在其他类中定义的类)搞乱还为时过早。从学习基本知识开始,现在考虑每个类都必须在自己的文件中定义。只有当您对这些基础知识感到满意时,才可以阅读有关嵌套类的 Java 教程。
  • @JBNizet:啊,当然。我不知道我在想什么。我会删除它,因为它完全是错误的,我想到了 private 类。
  • @JBNizet:是的,这是为了解释为什么使用包以及为什么使用导入,我读的书给出了这样的介绍......

标签: java package


【解决方案1】:

是的,一个包可以有多个public 类。

为每个 public 类创建一个新包将非常麻烦,而且根本不提供任何概述。

java. 只是 JDK/JRE 附带的标准库。

包实际上就像您系统上的文件夹。一个文件夹中可以有多个文件,这没有问题。

通常,包的结构方式是它们组合相关的类,以使开发人员更容易。如果您根本不想有任何包,或者您想要为每个类创建一个新包:没关系。您将成为自己最大的敌人,但这肯定是有可能的。

【讨论】:

    【解决方案2】:
    import java.util.ArrayList;
    

    意思是:让我使用 ArrayList 包中的类 java.util,只输入 ArrayList 而不是 java.util.ArrayList

    java.util 是包的名称,仅此而已。这是 Java 开发人员选择存储 ArrayList 类的地方。它与任何其他包名称没有什么不同,除了您不能将 java 包用于您自己的类,因为它是为标准 Java 类保留的。

    import java.util.*;
    

    意思是:让我使用包java.utilArrayListLinkedListCollection等)的所有类,只需输入它们的简单名称(ArrayListLinkedListCollection)等)而不是它们的完全限定名称(java.util.ArrayListjava.util.LinkedListjava.util.Collection 等)

    所有这些类都是公共的(如其 javadoc 中所述)。如果它们不公开,您将无法在自己的课程中使用它们。

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 2017-03-29
      • 1970-01-01
      • 2013-11-17
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      相关资源
      最近更新 更多