[SCALA] 스칼라에서 어떻게 자바에서 정의 된 클래스의 동반자 객체를 정의 할 수 있습니다?
SCALA스칼라에서 어떻게 자바에서 정의 된 클래스의 동반자 객체를 정의 할 수 있습니다?
나는 모델링 도구에 의해 생성 된 자바 클래스에 암시 적 변환을 추가하고 싶습니다. 나는 컴파일러가 자동으로 발견 있도록 해당 클래스의 동반자 개체에 추가 할 그래서. 동반자가 동일한 파일에 정의되어야하기 때문에하지만, 별도의 파일에 추가 할 수 없습니다. 나는 이것에 대해 할 수있는 일이 있나요?
물론, 내가 다른 객체 내 모든 암시 적 변환을 정의 할 수 있습니다 다음 범위에 그것을 가지고 있지만, 이것은 여분의 수입을 필요로한다. 다른 해결책?
해결법
-
==============================
1.스칼라 컴파일러로 지금 동반자가 동일한 파일에 넣어 이외의 객체를 정의하는 방법이 없습니다 스탠드로. 당신이 할 수있는 최선은 동일한 패키지 이름과 여분의 수입과 비 동반자 개체입니다.
스칼라 컴파일러로 지금 동반자가 동일한 파일에 넣어 이외의 객체를 정의하는 방법이 없습니다 스탠드로. 당신이 할 수있는 최선은 동일한 패키지 이름과 여분의 수입과 비 동반자 개체입니다.
당신은 분명 매우 유용한 기능이 될 것이기 때문에 http://groups.google.com/group/scala-debate에 게시물을 제발 캡슐화에 대한 가정을 파괴하지 않고 사후 교제를 만들 수있는 좋은 방법을 생각 할 수 있습니다.
-
==============================
2.당신은 내가 자주 배열 PREDEF 같은 내 자신의 프로젝트 별에서 할 물론 자신의 동반자 객체를 정의 할 수 있습니다. 예를 들면 :
당신은 내가 자주 배열 PREDEF 같은 내 자신의 프로젝트 별에서 할 물론 자신의 동반자 객체를 정의 할 수 있습니다. 예를 들면 :
object domain { type TimeUnit = java.util.concurrent.TimeUnit object TimeUnit { def valueOf(s : String) = java.util.concurrent.TimeUnit.valueOf(str) val Millis = java.util.concurrent.TimeUnit.MILLISECONDS //etc }
그런 다음이 사용할 수 있습니다 :
import my.domain._ val tu : TimeUnit = TimeUnit.valueOf("MILLISECONDS")
하지만 당신의 domain.TimeUnit가 모듈 (즉 스칼라 객체)
from https://stackoverflow.com/questions/4921827/in-scala-how-can-i-define-a-companion-object-for-a-class-defined-in-java by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 타입에서 TypeTag을 얻기? (0) | 2019.11.24 |
---|---|
[SCALA] 스칼라의 일반 형식 유추 (0) | 2019.11.24 |
[SCALA] 평등에 대한 스칼라 함수 값을 비교하는 방법 (0) | 2019.11.24 |
[SCALA] 스칼라 '데프 foo는 = {1}'대 '데프 foo는 {1}' (0) | 2019.11.24 |
[SCALA] 수비력 foo는 [A, B] (XS : (A, B) *) : 어떻게 데프 foo는 사이에 [A] (A * XS)를 구별 할 수 있습니까? (0) | 2019.11.24 |