所以,我有一些用Java编写的东西,我想在Scala中扩展它...我遇到的问题是Scala没有看到我需要的方法。
以下是它的设置方式: Player扩展了Mob,Mob扩展了Entity。
我需要在Player中访问未在Mob或Entity中定义的方法,但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的成员
答案 0 :(得分:2)
我从来没有遇到过这样的问题,你可能检查了你的配置和其他一切,所以我猜这是一些与Eclipse相关的构建问题。您应该尝试从命令行构建,以查看Scala或Eclipse是否存在问题。
答案 1 :(得分:1)
您是否可以针对课程进行测试,看看您是否选择了合适的测试?
p.getClass.getMethods
...如果可能(可能会遇到NPE)以找到来源:
p.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
答案 2 :(得分:0)
编译Scala类时,请执行以下操作:
scalac *.scala *.java
这样,Scala将查看Java代码以查看可用的内容。但是,如果Java代码已经编译并作为jar文件提供,只需将其添加到编译Scala代码时使用的类路径中。