2016-07-28 4 views
4

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

Затем я использую Google Guice, который реализует спецификацию JSR-330. К счастью, во время интеграции Guice и Scala я не обнаружил никаких проблем. Я использую конструктор-инъектор, потому что мне приходится иметь дело с неизменностью.

Вопрос в том, почему в Scala мы должны использовать обозначение @Inject() перед параметром конструктора? Почему () paranthesis? Ниже приведен пример:

class MyClass @Inject() (val another: AnotherClass) { 
    // Body of the class 
} 

ответ

3

В противном случае, как бы вы сказать, если (val another: AnotherClass) является список параметров конструктора или аргументы @Inject?

+0

Так просто. большое спасибо –

3

Это все о синтаксисе аннотации конструктора. Scala требует конструктор аннотации иметь один (и ровно один) список параметров (даже если он пуст)

class Bar @Fooable() (val i : Int) { 

} 

Что бы параметр i принадлежит ниже: аннотации или Bar класса?

class Bar @Fooable(val i : Int) { 

} 
Смежные вопросы