Play Framework (2.3.5) - Не удается получить доступ к шаблону во внутреннем классе.

У меня есть класс, определенный так (псевдокод):

package com.some.namespace

public class SomeClass {

    protected SomeClass() {}

    // stuff...

    public class SomeInnerClass {

        public SomeInnerClass() {}

        // more stuff (accesses instance variables from SomeClass)...

    }

}

Затем в моем шаблоне я использую блок многократного использования, который определяется следующим образом:

@doSomething(val: com.some.namespace.SomeClass.SomeInnerClass) = {

    // even more stuff...

}

Но я получаю ошибку:

Тип SomeInnerClass не является членом объекта com.some.namespace.SomeClass

Я не могу получить доступ к внутренним классам в шаблонах или это должно работать? (если он должен работать, мне может понадобиться опубликовать мой фактический код)

1 ответ

Решение

Это должно работать, но потому что SomeInnerClass является зависимым типом, т.е. зависит от вашего экземпляра синглтон-внешнего класса, вам нужно написать его так:

@doSomething(value: com.some.namespace.SomeClass#SomeInnerClass) = {
    // even more stuff...
}

SomeClass#SomeInnerClass Синтаксис в Scala означает, смутно, SomeInnerClass из любого случая SomeClass, Смотрите этот ответ для более подробной информации.

Если внутренний класс был статическим, то ваш текущий SomeClass.SomeInnerClass Синтаксис будет путь.

Другие вопросы по тегам