当前位置: 首页 > 面试题库 >

不变类型:公共最终字段与获取器

樊奇思
2023-03-14
问题内容

我需要一个小的Container-Class来存储一些不可变的字符串。由于String本身是不可变的类型,所以我想到了这样的东西:

public final class Immu
{
  public final String foo;
  public final String bar;

  public Immu(final String foo, final String bar)
  {
    this.foo = foo;
    this.bar = bar;
  }
}

许多人似乎完全反对使用公共字段,而是使用Getters。恕我直言,在这种情况下,这只是样板,因为String本身是不可变的。

我可能对这个还有其他想法吗?


问题答案:

我会做您认为最简单明了的事情。如果您有一个仅由有限数量的类使用的数据值类。esp包本地类。那么我会避免使用getter /
setter,而使用本地或公共字段包。

如果您有一个期望其他模块/开发人员使用的类,那么从长远来看,遵循getter / setter模型可能是一种更安全的方法。



 类似资料:
  • 我有一个抽象类的许多子类,每个子类都声明了一个同名的公共静态final字段。我在考虑在抽象超类中包含这个字段,而不初始化它,并希望每个子类都能被强制初始化它。 我之所以这么想,是因为抽象类的所有子类都声明了一个名为UNIQUE_ID的公共静态最终字符串字段,并且每个子类都有必要声明一个具有该名称的字段。 我希望我的问题足够清楚,如果不清楚,请告诉我。 能不能做一些和这个差不多的事情? 编辑:添加代

  • 定义不可变类的策略表明 所有字段都应该是最终字段。 对于ex: 为什么一定要最终决定? 因为我没有给出setter方法吗?它不能改变。谢谢。

  • 问题内容: 我碰巧在工作场所遇到了Java代码。这是场景:有2个类- 和。 除了4个公共静态最终字符串值外,没有任何内容。它的目的是使用类似的值(不要问我为什么,这不是我的代码)。 进口。我在其中编辑了字符串值并对其进行了编译。当我运行时,我可以看到它正在使用旧值- 而不是新值。我不得不重新编译以使其使用来自的新值!(我不得不重新编译其他导入的类!) 这是仅因为JDK 1.6还是我早就应该知道重新

  • 问题内容: 我一直想知道Java中的单例。按照惯例,单例设置如下: 最近,我切换到使用以下内容: 由于没有空检查,因此它更短,更快捷,而且打字对我来说比打字好。有什么理由不能使第二种方法成为主流呢? 问题答案: 第一个版本在第一次实际需要时创建实例,而第二个版本(较短的版本)在初始化类后立即运行构造函数 类或接口类型T将在以下任何一种首次出现之前立即初始化: T是一个类,并创建T的实例。 T是一个

  • 我有一个接一个的类来测试模拟对象。 我的测试: Test01工作正常,但在Test02中我有问题。在Test02方法中,需要调用进程路径。它使用mockNetwork公共最终变量。我不知道在哪里设置它们。它导致了空异常。在上面的代码中,我试图更改此字段的可访问性并设置它们,但现在我在消息“sinkIndex”中出现错误。 如何在mockNetwork中模拟公共最终变量?我正在使用Easymock。

  • 问题内容: 给定下面的Java代码,您可以在Ruby类中最接近地表示这两个变量吗?而且,在Ruby中是否可以像Java中那样区分和变量? 问题答案: Ruby中确实没有等效的构造。 但是,您似乎犯了一个经典的移植错误:您有一种使用语言A 的 解决方案 ,然后尝试将其翻译为语言B,这时您真正应该做的就是找出 问题 ,然后找出解决方法使用语言B。 我不能完全确定您要从那个小的代码段中解决什么问题,但是