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

时间:2011-04-28 16:56:50

标签: java scala interop

所以,我有一些用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的成员

3 个答案:

答案 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代码时使用的类路径中。