2013-05-10 2 views
3

동일한 기본 유형의 많은 객체가 있습니다. 나는 그것을 만들기위한 일반적인 함수를 만들고 싶다. 코드 샘플 : 대신의 MainClass 방법에동적 var에서 클래스를 인스턴스화 할 수 있습니까?

class Grid extends Display { .... 
class Start extends Display { .... 

class MainClass { 
    Grid grid; 
    Start start; 
    .... 
} 

는 :

void _newDisplay(dynamicType, Display display) { 
    display = new dynamicType(); 
    display.load(PATH);   
} 

_newDisplay(Start, start); 
_newDisplay(Grid, grid); 

.... 

나는 http://www.dartlang.org/articles/optional-types/을 읽을 수는 있지만 정확히 찾을 수 없습니다 :

start = new Start(); 
start.load(PATH); 

grid = new Grid(); 
grid.load(PATH); 

.... 

나는 같은 것을 할 싶습니다 내가 원한거야.

나는 또한 Instantiate a class from a string을 발견했지만 "메모 : 이것은 JavaScript로 컴파일 할 때 작동하지 않을 수 있습니다 .dart2js 컴파일러는 아직 미러를 완전히 지원하지 않습니다." 이 "미러"솔루션 만 동적 인스턴스화를 사용할 수 있습니까?

+0

재를 참조하십시오. dart2js를 사용하여 미러를 지원하려는 의도가 있으며 아직 작업 중이지만 아직 100 %는 아닙니다. 계속 지켜봐! –

답변

4

다트는이를 직접 수행하는 방법을 지원하지 않습니다. 일반적으로 우리는 우리를 위해 유형을 인스턴스화 폐쇄를 제공함으로써이 문제를 해결 : 거울과 dart2js :

void _newDisplay(dynamicType, Display display) { 
    display = dynamicType(); 
    display.load(PATH);   
} 

_newDisplay(() => new Start(), start); 
_newDisplay(() => new Grid(), grid); 

는 또한 What are some good workarounds for dart's lack of static typing semantics?

관련 문제