私はダーツにはまだまだ新しく、それがもたらすすべてのニュアンスを学んでいます。私の現在の仕事で私が実際に抱いていることの一つは、親クラスから静的メソッドを継承(またはプロキシ)することです。"継承された"静的メソッドを正しくプロキシする方法はありますか?
void main() {
EnglishCasual.greet();
}
class English {
static greet() {
actGreeting();
sayGreeting();
}
static sayGreeting() {
print('hello');
}
static actGreeting() {
print('<tips hat>');
}
}
class EnglishCasual extends English {
static sayGreeting() {
print("m'lady");
}
static actGreeting() {
print('<tips fedora>');
}
}
以上、ダートのドキュメントによると、静的メソッドは継承されていないので、動作が期待されるエラーNoSuchMethodError: method not found: 'greet'
与える(私には奇妙に思えるれますが、[OK]をクリックします。上の移動を...)
だから、私は...親クラスに
を簡単なプロキシを試してみましたしかし、それは別のエラーを生成:Invalid context for 'super' invocation
または'super' is only available in instance methods
。 Ok ...明示的に親クラスを名前で呼んでみましょう。
しかし、予想通り、それはちょうどEnglish.greet()
に、他のコールとして扱われ、我々は正式な挨拶代わりのカジュアルな1を取得しています。意味をなさない
それで、私は反射になった。それはwasn、noSuchMethod
がstaticとして定義されていなかったので、私は、期待している必要がありますエラーThe method 'greet' is not defined for the class 'EnglishCasual'
をもたらし
:私は有望に思えたし、テストにそれを置くように、ここでスニペットを見つけました静的メソッド呼び出しが呼び出されています。だから、最後にもう一度...
そして、私たちは別のエラーThe name 'noSuchMethod' is already defined in 'core/object.dart'
を取得します。
この時点で、私はアイデアがありません。この(一見シンプルな)エクササイズを行う方法がないようで、私はあなたが正しい方向に私を向けることを本当に望んでいます。
これを行う正しい方法は何ですか?
静的メソッドは継承されず、AFAIKをプロキシすることはできません。 –
静的メソッドを使用しないでください –