Scala在访问Java方法时遇到问题

所以,我有一些用Java编写的东西,我想在Scala中扩展它…我遇到的问题是Scala没有看到我需要的方法。

以下是它的设置方式:Player扩展Mob,Mob扩展Entity。

我需要访问未在Mob或Entity中定义的Player中的方法,但Scala认为即使Java存在也不存在。

它可以看到Mob和Entity定义的方法就好了。 此外,我所谈论的所有方法都是非静态的。

那么,我做错了什么,或者这是Scala强加的限制?

编辑 – 这是相关代码:

package test import rsca.gs.model.Player object Test { def handle(p:Player): Unit = { p.getActionSender().sendTeleBubble(0, 0, false); } } 

玩家类:

 package rsca.gs.model; // imports public final class Player extends Mob { // Implemented methods (not going to post them, as there are quite a few) // Relevant code private MiscPacketBuilder actionSender; public MiscPacketBuilder getActionSender() { return actionSender; } } 

错误:值getActionSender不是rsca.gs.model.Player的成员

我从来没有遇到过这样的问题,你可能已经检查了你的配置和其他一切两次,所以我猜这是一些与Eclipse相关的构建问题。 您应该尝试从命令行构建,以查看Scala或Eclipse是否存在问题。

您是否有可能针对课程进行测试,看看您是否选择了正确的测试?

 p.getClass.getMethods 

…如果可能(可能会遇到NPE)以找到来源:

 p.getClass.getProtectionDomain.getCodeSource.getLocation.getPath 

编译Scala类时,请执行以下操作:

 scalac *.scala *.java 

这样,Scala将查看Java代码以查看可用的内容。 但是,如果Java代码已经编译并作为jar文件提供,只需将其添加到编译Scala代码时使用的类路径中。