메서드 체이닝에 적합한 구현 유형을 Groovy 특성으로 반환 할 수 있습니까?

해결 J

메서드 체인을 사용하여 구현 클래스의 메서드와 함께 특성 메서드를 통합 할 수 있습니까? 이를 위해서는 트레이 트가 구현 클래스의 특정 유형을 반환해야하며 "this"변수는 기본적으로 해당 유형이 아닙니다.

다음과 같은 것 :

def withFilter(String filter){
    this.filter = filter
    return (super.getClass())this
}

아래 게시물의 최상위 답변에 따르면 Scala Traits로 쉽게 달성 할 수 있지만 구문을 정확하게 이해하지 못합니다. 반환 유형을 정의하는 클로저를 사용하는 것처럼 보이지만 Groovy에서도 동일한 것이 가능합니까?

메서드 체이닝을 지원하는 Scala 트레이 트를 구현하는 모범 사례

심장

제네릭 접근 방식을 사용할 수 있습니다.

다음은 예입니다.

trait MyTrait<T extends MyTrait<T>> {
    def filter

    T withFilter(String filter) {
        this.filter = filter
        return (T) this
    }
}

class MyClz implements MyTrait<MyClz> {
    def clzMethod() {}
}

def clz = new MyClz()
        .withFilter("hello")
        .withFilter("another")
        .clzMethod()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

모든 특성을 구현하는 유형으로 구성된 튜플에 대한 특성을 자동으로 구현할 수 있습니까?

인터페이스가 서명 또는 반환 유형에서 인터페이스의 구체적인 구현 유형을 참조하는 메서드를 어떻게 포함 할 수 있습니까?

특성이 상속 된 특성의 메서드에 대한 기본 구현을 제공 할 수 있습니까?

유형 별칭에 대한 메서드를 구현할 수 있습니까?

mypy는 현재 객체의 유형에 따라 메소드 반환 유형을 선택할 수 있습니까?

로컬 유형으로 매개 변수화 된 다른 상자의 일반 유형에 대한 다른 상자의 특성을 구현할 수 없습니다.

Swift에서 반환 유형을 특정 유형의 컬렉션으로 지정할 수 있습니까?

swift에서 '()' 유형의 반환 표현식을 반환 유형 'String'으로 변환할 수 없습니다.

구체적인 유형의 반복자 특성 개체를 특성 개체의 반복자 특성 개체로 어떻게 변환 할 수 있습니까?

클래스를 열거 형의 생성자 매개 변수로 전달한 다음 메소드에서 반환 유형으로 사용할 수 있습니까?

인터페이스 메서드 (매개 변수 없음)의 반환 값은 비동기 적으로 획득됩니다. 구현할 수 있습니까?

T의 특정 구현을 반환하는 메서드를 Func<T> 변수에 할당합니다.

서명 List <Class <로 메서드를 구현할 수 있습니까? Java에서 Annotation >>을 확장합니까?

(어떻게) go에서 일반 `Either` 유형을 구현할 수 있습니까?

데코레이터로 메서드의 반환 유형을 수정할 수 있습니까?

인터페이스를 구현하고 인터페이스 메서드 중 하나의 반환 유형을 재정의할 수 있습니까?

C ++에서 자율적`self` 멤버 유형을 구현할 수 있습니까?

단일 구조체에 대해 서로 다른 방식으로 동일한 특성을 여러 번 구현할 수 있습니까?

인수를 기반으로 Rust 함수 또는 특성 메서드의 반환 유형을 계산할 수 있습니까?

Go-Lang 구조체에 대한 메서드를 일반적으로 지정할 수 있습니까?

다른 유형을 다형 적으로 반환 할 수있는 C ++에서 팩토리 메서드를 만드는 방법은 무엇입니까?

바인딩이있는이 일반적인 메소드가 어떤 유형을 반환 할 수 있습니까?

Haskell에서 부분적으로 적용된 다중 매개 변수 유형 클래스에 대한 기본 구현을 제공 할 수 있습니까?

C에서 한 데이터 유형 또는 다른 데이터 유형을 반환 할 수있는 함수를 작성할 수 있습니까?

동일한 매개 변수를 사용하지만 반환 유형이 다른 다른 메서드로 메서드를 오버로드 할 수 있습니까?

C ++에서 유형 배열을 구현할 수 있습니까?

JSON의 필드는 다양한 유형으로 제공 될 수 있습니다. Go에서 단일 구조체로 표현할 수 있습니까?

궁극적으로 특정 유형으로 모두 표현할 수있는 인수 유형을 기반으로이 '오버로드 매트릭스'를 단순화하는 방법이 있습니까?

람다 미적분에서 n- 튜플을 반환하는 함수를 구현할 수 있습니까?

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관