我注意到PetitParserDart has a lot of @override
in the code,但我不知道他們如何被檢查?@飛鏢代碼
我嘗試了IDEA dart-plugin @override
,但它根本沒有任何效果。我們如何使用Dart使用@override
?
我注意到PetitParserDart has a lot of @override
in the code,但我不知道他們如何被檢查?@飛鏢代碼
我嘗試了IDEA dart-plugin @override
,但它根本沒有任何效果。我們如何使用Dart使用@override
?
@override
註釋是元數據的一個例子。您可以使用Mirrors在代碼中檢查這些內容。下面是一個檢查,如果在子類中m1()
方法有@verride
詮釋一個簡單的例子:
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]'
}
從@override
DOC:
用於標記一個實例成員(方法,字段,getter或setter)作爲覆蓋繼承的類成員的註釋。如果沒有重寫的成員,工具可以使用此註釋提供警告。
因此,它取決於您使用的工具。
在當前的Dart Editor(r24275)中,以下代碼沒有警告,但它應該(看起來像一個bug)。
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()
}
它可能使用@override一個好主意,反正現在,因爲不存在與這樣當工具沒有問題是固定的,它會工作。另外,它對於其他程序員閱讀代碼很有用。 –