【问题标题】:Scala: create public non-final class field from bytecode perspectiveScala:从字节码的角度创建公共的非最终类字段
【发布时间】:2016-07-10 07:08:24
【问题描述】:

在 Scala 中,如何创建编译为公共非最终字段的类字段(从字节码角度)。

与此类似(在 Java 中):

public class Meh {
  public String field;
}

【问题讨论】:

  • 这在 Scala AFAIK 中是不可能的。一旦您声明了 var 而不将其限制为私有或私有包,您将获得 getter 和 setter,而不是直接的字段访问。

标签: java scala javabeans bytecode


【解决方案1】:
  1. 以“干净正确的方式”是不可能的。

  2. 如果你真的想要:

    • 将变量定义为私有[this]
    • 通过 java 反射 setAccessible(true) 在伴随对象的构造函数中调用此字段。
  3. 我不知道你的问题背后的细节,但我想在大多数情况下,在项目中添加一些 java 会更好;)

【讨论】:

  • 如果损坏的字段名称无关紧要,内联访问器会强制它:class C { private[this] var s: String = _ ; @inline private final def s(): String = this.s }stackoverflow.com/q/12486992/1296806
猜你喜欢
  • 2023-01-19
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多