2013-07-09 2 views

답변

3

@override 주석은 메타 데이터의 한 예입니다. 미러를 사용하여 코드에서이를 확인할 수 있습니다. 도구를 그렇게 때 아무 문제가 없기 때문에, 지금은 어쨌든

import 'package:meta/meta.dart'; 
import 'dart:mirrors'; 

class A { 
    m1() {} 
} 

class B extends A { 
    @override m1() {} 
} 

void main() { 
    ClassMirror classMirror = reflectClass(B); 
    MethodMirror methodMirror = classMirror.methods[const Symbol('m1')]; 
    InstanceMirror instanceMirror = methodMirror.metadata.first; 
    print(instanceMirror.reflectee); // Instance of '[email protected]' 
} 
2

:

상속 반원으로서 재정의 인스턴스 부재 (메소드, 필드, 또는 게터 세터)를 표시하는 데 사용되는 주석. 도구는 재정의 된 멤버가 없으면이 주석을 사용하여 경고를 제공 할 수 있습니다.

따라서 사용하는 도구에 따라 다릅니다.

현재 다트 편집기 (r24275)에는 다음 코드에 대한 경고는 없지만 버그 (버그)처럼 보입니다.

import 'package:meta/meta.dart'; 
class A { 
    m1() {} 
} 
class B extends A { 
    @override m1() {} // no warning because A has a m1() 
    @override m2() {} // tools should display a warning because A has no m2() 
} 
+1

그것은 @Override를 사용하는 것이 좋습니다는 아마 다음은 자식 클래스의 m1() 방법은 @verride 주석이 있는지 확인하는 간단한 예입니다 고정되어 작동합니다. 또한 코드를 읽는 다른 프로그래머에게도 유용합니다. –