具有内部 类 的性能影响

Performance impact of having inner classes

我想知道内部 class 是否会对性能产生任何影响。 目前我有一个 class 如下。

@Data
@AllArgsConstructor
public class Sample {
    // A total of 9 fields
    // 1. long
    // 2. Enum
    // 3. long
    // 4. int
    // 5. Set<Long>
    // 6. long
    // 7. Enum
    // 8. double
    // 9. long
}

目前我刚用过lombok的@Data@AllArgsConstructor。用例是这样的,我在创建这个 class.

的对象时总是必须使用所有参数构造函数

如果我使用 @Builder 注释,那将创建一个内部 class。 (在大多数情况下,我们遵循构建器模式来创建对象)。

所以一般来说,内部 classes 对性能有什么影响吗?

对于 JVM,没有“inner class”这样的东西,它只是一个 class(带有一个有趣的合成名称)和一个附加字段(除非它是静态的)外部 this 实例。

因此,使用内部 class 而不是独立的对性能的影响应该几乎不明显。

但是创建一个实例来保存方法的调用参数而不是直接使用长参数列表调用方法本质上更慢:您必须创建一个实例,使用预期的方法参数初始化它的字段,并且该方法必须从这个实例中检索参数,最后这个实例变成垃圾。

我同意长参数列表是一种代码味道,但引入 MethodXyArguments class 并没有改善任何东西,它只是把它隐藏在地毯下。