2011-12-08 4 views
7

스칼라 프로젝트가 Java와 "호환"되기를 원한다면 (스칼라가 아닌 프로그래머도 기여할 수 있도록) Java 코드에서 Scala API를 호출하는 것이 실용적입니다. Project Lombok을 Java 코드? 아니면 두 사람이 잘 지내지 않습니까?Project Lombok은 Scala에서 잘 작동합니까?

나는 이클립스에서 스칼라 IDE로 개발 중이다.

EDIT : 실제로 의미하는 바는 다음과 같습니다. Scala 편집기에서 Eclipse에서 생성 된 코드가 Lombok에서 생성 된 코드인지 또는 실제로 입력 한 Java 코드입니까?

+1

편집에 관해서 Eclipse에 대한 지식이 완전히 부족합니다. 컴파일 된 Java 코드를 라이브러리로 사용하는 것이 분명합니다. 따라서 귀하의 질문은 혼합 프로젝트가 아닌 라이브러리 믹싱에만 유용합니다. – ziggystar

답변

9

스칼라와 자바는 바이트 코드 수준에서 상호 운용되므로 바이트 코드의 출처는 신경 쓰지 않습니다. 그래서 나는 Lombok 어노테이션을 사용하는 자바 코드가 여전히 스칼라 프로그램에서 호출 될 수 있다고 생각한다.

그리고 주석 주석 Lombok이 스칼라 코드로 사용할 수 있는지 묻는다면, 대부분의 기능이 Scala itsef에서 제공되기 때문에 아무런 의미가 없습니다.

예를 들어, @Data 인 클래스는 스칼라에서 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은 .... 등 모든 멋진 toString, equals, hashcode해야합니다.

+0

+1 나는 이런 식으로 생각하지 않았지만 내 질문에 절반으로 대답했다. 질문을 편집하여 원하는 것을 지정하겠습니다. –

+0

사실, 나는 묻기 전에 나 자신을 생각해야했다. 나쁜 질문입니다. –

9

스칼라 에디터 부분은 생성 된 코드를 잘 볼 수 있습니다.

롬복의 대부분은 스칼라와 같은 사양이나 기타 사항을 따릅니다. 어디 롬복은 벗어난 것은 그래서 심지어는 호환 :

부인이며, canEqual하고 덧붙여 정확한 똑같은 스칼라의 경우 클래스 IIRC에 대해 생성하는 것입니다 구현, 동일 : 나는 롬복을 프로젝트에 핵심 기여자입니다.

+0

흠, 현재 스칼라 테스트 코드에서 @RequiredArgsConstructor에 의해 생성 된 생성자를 찾지 못하는 문제가 있습니다. 이것이 설치 또는 버그에서 문제가되는지 궁금합니다. – eduardohl

+1

Java 코드 이전에 스칼라 코드를 컴파일하는 Eclipse의 문제였습니다. 환경 설정 >> 스칼라 >> 컴파일러 >> BuildManager 탭 >> compileOrder를 Mixed에서 JavaThenScala로 변경 – eduardohl

+0

@rzwitserloot 스칼라 케이스 클래스는'@Data' 주석을 가지고 있습니다. 그런 코드를 컴파일하기 위해 Eclipsec보다 Javac을 사용할 것을 권장 하시겠습니까? –