如何在Java中通过方括号访问私有字段

How to get access to private field via square brackets in JavaScript(如何在Java中通过方括号访问私有字段)
本文介绍了如何在Java中通过方括号访问私有字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码起作用:

class Test {
  #field

  get field() {
    return this.#field;
  }
}

但如果我想计算字段名我必须使用方括号,但它不起作用:

class Test {
  #field;

  get field() {
    return this['#field'];
  }
}

有没有办法获取具有计算名称的私有字段?

推荐答案

这不可能。来自proposal:

没有私有计算属性名称:#foo是私有标识符,#[foo]是语法错误。

和its FAQ:

既然this.#x访问名为#x的私有字段,为什么this['#x']不访问?

  1. 这将使属性访问语义复杂化。

  2. 动态访问私有字段与"私有"的概念相反。例如,这是关于:

class Dict extends null {
  #data = something_secret;
  add(key, value) {
    this[key] = value;
  }
  get(key) {
    return this[key];
  }
}

(new Dict).get('#data'); // returns something_secret

的不同语义不会破坏当前语法的不变量?

不完全是,但这是一个令人担忧的问题。this.#x以前从未 法律语法,所以从一个角度来看,不可能有不变的 关于它。

另一方面,它们的不同可能会令人惊讶,而这一点 是当前提案的一个缺点。

另请参阅this issue。

这篇关于如何在Java中通过方括号访问私有字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)