2011-12-08 7 views
7

ScalaプロジェクトがJavaと "互換"するようにしたいのであれば、Scala APIをJavaコードから呼び出すことが実用的です(Scala以外のプログラマも貢献できるようになります)ので、Project LombokをJavaコード?それとも2人はうまくやっていないのですか?Project LombokはScalaでうまく動作しますか?

私はScala IDEでEclipseで開発しています。

編集:私が本当に意味していたのは、Scala Eclipseのエディタは、Lombokによって生成されたコードか、実際に入力したJavaコードを表示しますか?

+1

あなたの編集と私のEclipseに関する知識の欠如については、コンパイルされたJavaコードをライブラリとして使用しているときには明らかに効果があります。だからあなたの質問は、混合プロジェクトではなく、ライブラリを混在させるのでは面白いです。 – ziggystar

答えて

9

スカラとJavaはバイトコードレベルで相互運用しているので、バイトコードがどこから来るかは気にしません。だから、私はあなたのJavaコードは、ロンボクの注釈を使用しても、Scalaのプログラムから呼び出すことができると信じています。

Lombokが提供する注釈がScalaコードで使用できるかどうかを尋ねる場合は、これらの機能のほとんどがScala itsefによって提供されているため、何の意味もありません。

たとえば、@Dataのクラスは、Scalaのcase classです。

case class Data(name: String, value: Int) 

通常のクラスと同じようにJavaコードでアクセスできます。

Data d1 = new Data("someData", 1); // Using constructor 
Data d2 = Data.apply("someData", 1); // Or using factory 

そしてDataは....など、すべての素晴らしいtoStringequalshashcodeています。

+0

+1私はこのように考えていませんでしたが、質問の半分に答えます。私は質問を編集して、私が欲しいものを指定します。 –

+0

実際には、私は尋ねる前にそれを考えていたはずです。間違った質問。 –

9

スケーラエディタの部分では、生成されたコードが正しく表示されます。

ロンボクのほとんどは、いくつかの仕様に従っており、スカラーと同じです。ロンボクは外れたところ偶然にScalaはIIRCケースクラスの生成まったく同じものであるcanEqualと実装に等しい、ですので、でもそれは互換性があります:)

免責事項:私はロンボクを投影するコア貢献者です。

+0

ええと、私は現在、私のスカラーテストコードで@RequiredArgsConstructorによって生成されたコンストラクタを見つけられないという問題を抱えています。それが私のセットアップやバグの問題であるかどうかは疑問です。 – eduardohl

+1

Javaコードの前にEclipseのScalaコードをコンパイルするときに問題が発生しました。 Preferences >> Scala >> Compiler >> BuildManagerタブ>> compileOrderをMixedからJavaThenScalaに変更 – eduardohl

+0

@rzwitserloot Scalaの場合クラスに '@Data'アノテーションが付いているので、そのようなコードをコンパイルするためにEclipsecよりもJavacを使用することをお勧めしますか? –

関連する問題