2013-12-09 1 views
3

Groovy Extension Module을 사용하여 메서드를 byte[] 클래스에 추가했습니다. 그러나 동일한 클래스에 Comparable 인터페이스를 추가하고 싶지만이를 수행하는 방법을 알 수 없습니다.Groovy에서 기존 Java 클래스에 동적으로 인터페이스를 추가하는 방법

대서양 표준시 변환을 사용하는 것이 가능할 수도 있습니다. 아니면 더 간단한 방법이 있을까요? 아마도 expando 메타 클래스를 조작하면 될까요?

답변

2

AST 변환을 통해이 작업을 수행 할 수 없습니다. AST 변환은 byte[]이 JDK 1 인 경우 Groovy 클래스에만 적용됩니다.

Metaclass를 사용하면 클래스에 고유 한 메서드 및 속성을 추가 할 수 있지만 java 내부의 instanceof 동작은 변경할 수 없습니다. 따라서 Java 라이브러리에서 사용할 JDK 핵심 클래스에 인터페이스를 추가 할 수 없습니다.

어쩌면 Comparable을 구현하는 래퍼 클래스를 고려해야합니다.

+0

네, 물론 당신 말이 맞아요. 그래서 AST 변환은 해결책이 아닙니다. 실제로 큰 문제는 아니며 제안대로 간단한 해결 방법이 있습니다. 그냥 어떻게 든 이것을 달성하는 것이 가능할 것이라고 생각했습니다 ... 답변 해 주셔서 감사합니다. – Steinar

+0

래퍼를 사용하려면 @Delegate 주석을 확인하십시오. – topr

+0

@topr 당신이 나를 알 렸습니다. asker에게 알리기 위해'@ Steinar'를 사용하는 것이 더 낫습니다. ;) – Seagull