在java中放置内部类的惯例是什么?

时间:2013-11-24 20:24:12

标签: java coding-style inner-classes convention

我有一个名为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;
    }
}

代码无论哪种方式都有效,但我想知道适当的约定。感谢。

2 个答案:

答案 0 :(得分:7)

我总是选择principle of least surprise

当开发人员打开您的来源时,他们可能会被放置在源代码的顶部。首先是重要的东西

当他们向下滚动你的来源时,接下来应该看到不那么重要的东西

最后,最后他们应该找到不重要的东西

关于内部类是重要还是不太重要不重要的决定,我向您做出决定。

我肯定会认为内部类非常接近不重要,特别是如果它们是私有的 - 但是,如果是某种工厂类创建和操作该类型的对象,那么它们可以被视为重要即可。

在你的情况下 - 你似乎使用内部类来对方法进行子分类 - 我不会使用内部类来执行此操作,我会使用嵌套包,例如com.....util.matrixutil

答案 1 :(得分:0)

我认为,大部分案例都是:

  • 为了更好的可读性而提取到内部类中的匿名内部类(即java.util.ArrayList.SubList,JCF和Guava充满了这些内容。)
  • 主要与封闭类相关的小类或接口(即java.util.Map.Entry)。

我认为这是我第一次看到实用程序内部类,但这完全取决于作者。 : - )