2011-09-25 5 views
0

클래스 clubMember 및 클래스 user이 있다고 가정합니다. 클럽 회원 만이 사용자가 될 수 있으며, 사용자는 다른 클럽 회원 등급에 추가로 로그인 데이터를 가지고 있으며, 클럽 회원의 특성은 사용자의 권리와 관계가 있으므로 userclubMember으로 확장됩니다.하위 클래스로 개체 클래스 변경 (상속에 대한 일반 질문)

이제 클럽 회원이 현재 프로그래밍하고있는 grails 서블릿을 사용한다고 가정 해 보겠습니다. 새로운 user 인스턴스를 생성하면 이중 입력이 발생하고 이전 멤버와 다른 클래스 사이에 존재하는 모든 링크가 손실됩니다. 따라서 clubMember의 유형을 user으로 변환하는 것이 가장 좋은 방법일까요? 그렇다면 어떻게 할 수 있습니까 (Groovy)?

또는 하위 클래스 이외의 구현 방법을 추천 해 주시겠습니까? 이상적으로 "모든 멤버 목록"과 같은 요청도 사용자를 반환해야합니다. 서브 클래스의 경우에도 마찬가지입니까? Java: Creating a subclass object from a parent object, 당신이 특정 유형의 하나 개의 값이 다른 유형의 새 값이되고 싶은 경우에, 당신은 기본적으로 그루비에있는 Is it ever valid to convert an object from a base class to a subclass

+0

그루비 그들에 공백이있는 클래스 이름을 가지고있는 가장 쉬운 버전이 정말 보인다

그러나 팀이 자신의 의견에 제안, ClubMember을 가지고? –

+0

@Hermal 음 .. 아니 .. 클럽 회원의 독일어 단어에는 공백이 없습니다. – mzuba

+0

클래스 이름 공간을 제거했습니다. 당신의 질문이 아직도 명확하지 않습니다. "클럽 회원 유형을 사용자로 전환하는 것"은 무엇을 의미합니까? –

답변

0

:

관련 : (편집 그것은 내 Grails의 응용 프로그램의 경우입니다) 두 가지 방법 :

  1. asType : 그루비는 foo는의 클래스에 asType 방법을 추가 할 수 있습니다 의미한다 "foo.asType (Bar.class)"로 표현을 변환합니다, 예를 들어 "바로 foo는"에 당신을위한 회심을하십시오. 귀하의 경우에는 asType을 User에 추가하고 ClubMember를 처리하게하십시오.
  2. 명시 적 또는 암시 적 캐스트 : "(Bar) 컬렉션"에서 Groovy는 모음에 적합한 수의 인수를 취할 수있는 Bar의 생성자를 찾고 바깥으로 새 Bar 객체를 만듭니다. 사실 그것은 콜렉션에만 국한되지 않고 배열도 마찬가지입니다. 어쨌든 ... 당신의 예제에서 당신은 ClubMember를 User에게 가져간 생성자를 추가 한 다음 변환하려는 멤버가 들어있는 콜렉션을 캐스트 할 수 있습니다. 측면 노드에서 ... 모음을 Bar 입력 변수에 지정하면이 변환 (암시 적 형변환)도 발생합니다.

클래스에없는 변환 메소드 (너무 자유롭고 생성자도 변환 메소드라고도 함)를 원하면 asType 버전 또는 런타임 메타 프로그래밍 카테고리를 사용하여 asType을 추가 할 수 있습니다 필요에 따라 메서드 또는 필요한대로 생성자를 만듭니다. 사용자의 회원이

관련 문제