Ale*_*x R 1 java scala type-conversion
我在使用 Java 方法的 Scala 代码时遇到问题。
它正在呼唤:
value getDepth is not a member of amqpManagment.utils.data.ChessObject
var depth: Int = chessObjects.getDepth()
^
Run Code Online (Sandbox Code Playgroud)
然而,我在 Java 代码的许多其他地方使用 getDepth 并且它工作得很好。另外,在放置该代码后,它在 InteliJ 中工作了几个小时,这很奇怪,但也许项目在更改后没有重新构建......
然而 InteliJ 显示代码没问题,但在编译过程中显示错误。通过 InteliJ 或终端重建没有帮助。
斯卡拉代码:
import amqpManagment.utils.data.ChessObject
object ChessScheduler {
// DEPTH GAME
def startGameWithDepthRule(chessObject: ChessObject) : Integer =
{
...
val depth: Int = chessObjects.getDepth()
...
}
}
Run Code Online (Sandbox Code Playgroud)
Java代码:
@Getter
@Setter
public class ChessObject {
private Integer depth;
...
}
Run Code Online (Sandbox Code Playgroud)
构建.sbt
import sbt.Keys._
import sbt.Level
name := "ChessEngineModuler"
logLevel := Level.Warn
version := "1.0"
scalaVersion := "2.12.2"
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。
你好@Chenna Reddy :)
谢谢你的帖子,看来龙目岛确实有问题。然而在你的回答之后我意识到这是一个问题,因为 Scala 代码是在 Java 代码之前编译的。
我检查了三个解决方案,因为我添加了依赖项并打开了注释处理器。
第一个解决方案只是将 Getters 和 Setters 添加到 Java 类中,而不是通过 Lombok,但这是一个丑陋的解决方案
第二种解决方案只是添加“文件”->“设置”->“构建、执行、部署”->“编译器”->“Scala 编译器”->“编译顺序”->“Java”,然后添加“Scala”。
第三个是在build.sbt中设置的->compileOrder := CompileOrder.JavaThenScala
如果我们想将该代码部署到某个地方,我认为第三个是最好的:)