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

我们在Java中是否有一个Readonly字段(可以在类本身的范围内设置)?

慕容成文
2023-03-14
问题内容

我们如何拥有一个在类内 可写 但在类外只能“读取” 的变量?

例如,不必这样做:

Class C {
  private int width, height;

  int GetWidth(){
    return width;
  }

  int GetHeight(){
    return height;
  }

  // etc..

我想做这样的事情:

Class C {
  public_readonly int width, height;

  // etc...

最好的解决方案是什么?


问题答案:

用Java无法做到这一点。

您的两个选项(您提到的一个)是使用公共获取程序并使字段私有,或在类中进行详尽的文档编制。

getter方法的开销非常小(如果有的话)。如果要执行大量操作,则可能要缓存获取的值,而不是调用get方法。

编辑:

实现此目标的一种方法(尽管它比getter的开销更大innerC)是使用仅对您的C类可用的构造函数定义一个公共内部类(让我们称之为),并使您的字段公开。这样,您将无法innerC在类外部创建实例,因此无法从外部更改字段,但是可以从内部更改它们。但是,您可以从外面阅读它们。



 类似资料:
  • 问题内容: 我只是想知道是否需要TimeSpan,以便我可以定义两次之间的时,分,秒。 由此我们可以有两次之间的时间间隔。喜欢 要么 有了这个,我们就可以用它了。 我不确定这是否已经在Java中实现但尚未被我发现。 问题答案: 借助SDK中的JDK 8日期时间库,您可以使用 要么 来自JodaTime的会.. 时间间隔表示两个时刻之间的时间段。间隔包括开始时刻,不包括结束。结束时刻始终大于或等于开

  • 使用Lucene libs,我需要对现有的搜索函数进行一些更改:假设以下对象: 名称:“端口对象1” 数据:"TCP(1)/1000-2000" 查询(或搜索文本)为“1142”,是否可以在数据字段内搜索“1142”并找到端口对象1,因为它指的是1000-2000之间的范围? 我只找到了数值范围查询,但这不适用于本例,因为我不知道范围。。。 参考以上代码。查询"1200"应该找到第一个doc。 L

  • 问题内容: 给定以下代码: 因为函数变量中的代码在外部范围内,但不在全局范围内。是否可以在函数内修改变量?我当然可以从和阅读,但是如何修改? 问题答案: Python 3.x具有关键字。我认为这可以满足您的要求,但是我不确定您是在运行python 2还是3。 非本地语句使列出的标识符引用最近的封闭范围中的先前绑定的变量。这很重要,因为绑定的默认行为是首先搜索本地名称空间。该语句允许封装的代码在全局

  • 问题内容: 我有一个可选参数,它本身支持参数列表。 我的意思是,它应该支持: -f 1 2 -f 1 2 3 但不是: -f 1 -f 1 2 3 4 有没有办法在argparse中强制执行此操作?现在,我使用nargs =“ *”,然后检查列表长度。 编辑: 根据要求,我需要的是能够定义一个可接受数量的参数范围。我的意思是说(在示例中)2或3个args是正确的,但不是1或4或不在2..3范围内的

  • Go的范围可以在地图和切片上迭代,但我想知道是否有一种方法可以在一系列数字上迭代,比如: 或者有没有一种方法来表示Go中的整数范围,就像Ruby对类范围所做的那样?

  • 问题内容: 我正在使用Elasticsearch v2.3.0。假设我有一个映射索引: 所以,从文本复制到文本因。如果你查询信息,然后从纯数据显示在现场,因为不被修改。如果要获取所有文本,则应汇总客户端上的所有字段。如果有许多子字段,这可能会带来不便。 是否有一个魔术查询,该查询允许获取复制了所有文本的字段? 问题答案: 在字段集的映射中, 您应该能够使用字段来获取它 范例 : 结果