2014-12-26 3 views
1

Если класс, который расширяется другими классамиполучать тот тип, который назвал супер конструктор

class x{ 
    x(){ 
    Type calledByClass = ?? 
    } 
} 

class y extends x{ 
    y:super(); 
} 

class z extends x{ 
    z:super(); 
} 

с помощью зеркал, возможно внутри конструктора х, чтобы получить тип, из которого был назван супер конструктор?

new z(), например инициализирует calledByClass ввести Z

к сведению, что мой супер конструктор не может иметь параметры!

ответ

2
void main() { 
    new x(); 
    new y(); 
    new z(); 
} 

class x { 
    x() { 
    Type calledByClass = this.runtimeType; 
    print("calledByClass: $calledByClass"); 
    } 
} 

class y extends x { 
    y() : super(); 
} 

class z extends x { 
    z() : super(); 
} 

Выход:

calledByClass: x calledByClass: y calledByClass: z

Harder для определения суперкласса.

Например.

for example new z() will initialize superClass to type x 
Смежные вопросы