在java中放置内部类的约定是啥? [关闭]
Posted
技术标签:
【中文标题】在java中放置内部类的约定是啥? [关闭]【英文标题】:What is the convention for the placement of inner classes in java? [closed]在java中放置内部类的约定是什么? [关闭] 【发布时间】:2013-11-24 20:24:11 【问题描述】:我有一个名为 Util 的实用程序类。在其中我有一个 MatrixUtil 静态内部类(等等)。按照惯例,内部类位于何处?
MatrixUtil 是否应该在 Util 字段之后但在 Util 方法之前?我无法找到关于此的 Java 约定。也许我在 API 中错过了它...
不管怎样,这就是我所说的结构。
public class Util
public static final Vector3f myField;
public static class MatrixUtil
public static void myMatrixUtilMethod()
return;
public static float myUtilMethod()
return;
代码可以以任何方式工作,但我想知道正确的约定。谢谢。
【问题讨论】:
做任何你认为更容易阅读的事情。 对此没有严格的约定。 好的,谢谢!我很难找到一个约定,所以感谢您的澄清! 如果有兴趣,还有另一个SO thread 处理相同的主题。通过投票我可以说嵌套类属于文件的底部:) 【参考方案1】:我总是选择principle of least surprise
。
当开发人员打开您的源代码时,它们可能会被放置在源代码的顶部。所以首先是重要的东西。
当他们向下滚动您的来源时,他们接下来应该会看到不太重要的内容。
最后,他们应该找到不重要的东西。
关于内部类是重要还是不太重要还是不重要,由我决定。
我当然会认为内部类非常接近不重要,特别是如果它们是私有的 - 但是,如果是某种创建和操作该类型对象的工厂类,那么它们可以被视为重要。
在您的情况下 - 您似乎使用内部类对方法进行子分类 - 我不会使用内部类来执行此操作,我会使用嵌套包,例如 com.....util.matrixutil
。
【讨论】:
我避免使用嵌套包的唯一原因是该包只包含一个类。我的印象是包应该包含许多相关的类。出于这个原因,我选择了内部课程。这种方法好吗? @guyfleeman - 一个单独的包只包含一个类,而该类又只包含一个静态方法,这不是错误的 - 只是年轻。 :) 即使我近期没有添加的打算? 你的意图会改变......给它时间。此外 - 你应该编写你的代码来活得更久。 好的!非常感谢您的建议!【参考方案2】:我认为,大多数情况是:
为了更好的可读性,将匿名内部类提取到内部类中(即java.util.ArrayList.SubList
、JCF 和 Guava 都充满了这些)。
主要与封闭类相关的小类或接口(即java.util.Map.Entry
)。
我认为这是我第一次看到实用程序内部类,但这完全取决于作者。 :-)
【讨论】:
以上是关于在java中放置内部类的约定是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章