Проблемы с Scala при доступе к методам Java - PullRequest
3 голосов
/ 28 апреля 2011

Итак, у меня есть что-то написанное на 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 ]

2 голосов
/ 29 апреля 2011

Я никогда не сталкивался с такими проблемами, и вы, вероятно, дважды проверили свою конфигурацию и все остальное, поэтому я думаю, что это какая-то проблема сборки, связанная с Eclipse. Вы должны попытаться выполнить сборку из командной строки, чтобы увидеть, является ли проблема Scala или Eclipse.

1 голос
/ 29 апреля 2011

Можно ли провести тест на класс, просто чтобы проверить, правильно ли вы выбрали?

p.getClass.getMethods

... и, если возможно (может столкнуться с NPE), чтобы найти источник:

p.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
0 голосов
/ 28 апреля 2011

При компиляции класса Scala, сделайте что-то вроде этого:

scalac *.scala *.java

Таким образом, Scala будет искать код Java, чтобы увидеть, что доступно. Однако, если код Java уже скомпилирован и предоставлен в виде файла jar, просто добавьте его в путь к классам, используемый при компиляции кода Scala.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...