Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时使用不同的软件包?_Java - Fatal编程技术网

Java 何时使用不同的软件包?

Java 何时使用不同的软件包?,java,Java,我想开始创建应用程序,但是,我不知道什么时候应该使用软件包。如何使用软件包?您如何知道将哪个类放入哪个包中?除了涉及不超过一个文件的非常琐碎的程序外,您应该始终使用包。典型的包结构如下所示 com.<your_company>.<your_project>.<sub_system>.... 按照惯例,包名称总是小写的。相反,类名总是以大写字母开头。例如,在 com.google.gwt.core.client.EntryPoint; 包名是com.goog

我想开始创建应用程序,但是,我不知道什么时候应该使用软件包。如何使用软件包?您如何知道将哪个类放入哪个包中?

除了涉及不超过一个文件的非常琐碎的程序外,您应该始终使用包。典型的包结构如下所示

com.<your_company>.<your_project>.<sub_system>....
按照惯例,包名称总是小写的。相反,类名总是以大写字母开头。例如,在

com.google.gwt.core.client.EntryPoint;
包名是
com.google.gwt.core.client
,类名是
EntryPoint

学习的一个好方法是了解其他项目如何组织他们的包和类。下面我展示了一些示例(包括包名和类名):

我还想说的一点是,包名 通常是自上而下(从大到小)组织的。这个公约是 相反 互联网域名形成的惯例(从小到大)

在上面的例子中,Google的
GWT
项目将他们的包命名为

com.google.gwt....
而谷歌的互联网域名就是这种形式

....google.com

许多公司和组织使用域名的背面作为其软件包的前缀。

使用软件包按关注点分隔应用程序中的类。这在几个方面对您有所帮助:

  • 避免无关类之间的名称冲突
  • 将相关类分组在一起,并在不同的包中隔离不相关的类
所有这些都会使您的应用程序具有更好的可维护性。如果您能为包找到合理的名称,您甚至可以知道包中的类有什么用途

你可以阅读更多关于它的内容。一个非常常见的用例是分离

  • 来自的应用程序逻辑(也称为
    模型
  • 演示文稿/gui代码(通常称为
    视图
查看Java本身如何使用包来分隔内容:

  • java.lang.Math
    用于计算
  • 用于gui框架的
    javax.swing
    java.awt
  • java.nio
    用于缓冲输入/输出

Java中使用包是为了防止命名冲突、控制访问、使类、接口、枚举和注释的搜索/定位和使用更容易等等

如果你的程序有少量的类,比如3个类 您可能不必将它们分离到包中

您的类以逻辑的方式被分成包

例如:

如果您有一个加密数据的程序,每个加密算法
可以分成几个类,所有这些加密类都可以在同一个包中

这是一个愚蠢的问题,但是,如果您不属于某个组织或公司,该怎么办?你会给你的包起什么名字?它应该是你认为符合逻辑的,根据你试图解决的问题的性质或者你的包中的内容/类package@L4undry这是一个有道理的问题。我更新了我的答案来回答你的问题。
com.google.gwt.core.client.EntryPoint;
org.hibernate.annotations.Cache;
org.hibernate.annotations.CacheConcurrencyStrategy;

com.google.gwt.core.shared.GWT;

com.google.gwt.core.client.EntryPoint;
com.google.gwt.user.client.Window;
com.google.gwt.user.client.Window.Location;
com.google.gwt.user.client.rpc.AsyncCallback;
com.google.gwt.user.client.ui.RootPanel;
com.smartgwt.client.util.DateUtil;
com.smartgwt.client.util.SC;
com.smartgwt.client.widgets.Canvas;
com.smartgwt.client.widgets.HTMLFlow;
com.smartgwt.client.widgets.layout.VLayout;
com.google.gwt....
....google.com