2017-02-17 2 views
0

다트 1.22.0에서 새 인스턴스 생성 규칙과 관련된 문제가 있습니다. 나는 그 BaseModel을 확장하는 ParentType이라는 매개 변수화 된 타입을 취하는 BaseModel 클래스를 가지고있다.다트가있는 중첩 된 매개 변수화 된 유형 1.22.0 바운드 규칙에 대한 새 인스턴스 작성

모든 BaseModel에 특정 ParentType이있는 것은 아니며 BaseModel을 ParentType으로 인스턴스화하면 무한 규칙 위반이 발생합니다. 이 문제는 개발에 어떤 영향을 미칠 것 같았다하지 않은 나는 지금의 규칙을 무시하는거야

abstract class BaseModel<ParentType extends BaseModel> { 
    ParentType parentModel 
} 

class ParentModel extends BaseModel<BaseModel<...>> {} 

class ChildModel extends BaseModel<ParentModel> {} 

:

다음은 예입니다.

답변

0

이것은 당신이 원하는 것을 할 수 있습니다

abstract class BaseModel<ParentType extends BaseModel<Null>> 
+0

매우 간단한 예제에서 작동하는 것처럼 보이지만 더 복잡한 BaseModel 관계에서는 작동하지 않습니다. –

+0

구체적인 예를 들어 질문을 업데이트 할 수 있습니까? –

2

당신이 ParentModelparentModel 필드는 항상있을 것입니다 BaseModel 모든 종류의 (로 사용할 수 원하는 것을 수행하려는 작업에 조금 따라 다르지만 가정 null), 다음이 당신이 원하는 것을 할 수있다 :

abstract class BaseModel<ParentType extends BaseModel<ParentType>> { 
    ParentType parentModel; 
} 

class ParentModel extends BaseModel<Null> {} 

class ChildModel extends BaseModel<ParentModel> {} 

하지 않으면, 내가 문제의 제약과 목표는 무엇인지에 대한 자세한 내용을 알고 있어야합니다.

+0

기본 예제의 분석기를 만족하지만 더 복잡한 상속이있는 곳에서는 분석기가 작동하지 않습니다. '클래스 ParentModel 는' ChildModel 을 확장'클래스 ChildModel이 BASEMODEL가 확장 ' 내 코드베이스는 이러한 입력의 모든 변경하기 위해 너무 크고 복잡하며, 내가 이익을 볼 수 없습니다. 나는 그 규칙을 무시하고 사임했다. 나는 과거에 강한 모드로 고생했다.이 모드는 시작하기 위해이 패턴을 구현하는 자극이었다. 이 전에는 필자가 선호하는 솔루션 인 것처럼 보이는 필드 유형을 재정의했습니다. –