gpt4 book ai didi

java - 在 java 中,如何将 scala setter 方法 'myvar_$eq(myval)' 别名为更令人愉悦的东西?

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:35 25 4
gpt4 key购买 nike

我最近一直在将一些代码从 java 转换为 scala,试图自学这门语言。

假设我们有这个 Scala 类:

class Person() {
var name:String = "joebob"
}

现在我想从java访问它所以我不能像在scala中那样使用点符号。

所以我可以通过发出以下命令来获取我的 var 的内容:

person = Person.new();
System.out.println(person.name());

并通过以下方式设置:

person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());

这是正确的,因为我们的 Person 类在 javap 中看起来像这样:

Compiled from "Person.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
public Person();
public void name_$eq(java.lang.String);
public java.lang.String name();
}

是的,我可以编写自己的 getter/setter,但我讨厌用它填充类,考虑到我已经有了它们,这没有多大意义——我只是想更好地为 _$eq 方法起别名。 (当你处理像 antlr 这样的东西时,这实际上变得更糟,因为你必须逃避它,它最终看起来像 person.name_\$eq("newname");

注意:我宁愿不得不忍受这个,也不愿用更多的 setter 方法填充我的类。

那么在这种情况下你会怎么做?

最佳答案

您可以使用 Scala 的 bean 属性注释:

class Person() {
@scala.reflect.BeanProperty
var name:String = "joebob"
}

这将为您生成 getName 和 setName(如果您需要与需要 javabean 的 Java 库交互,这很有用)

关于java - 在 java 中,如何将 scala setter 方法 'myvar_$eq(myval)' 别名为更令人愉悦的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com