私はHaxeとHaxeFlixelを再学習しますが、ジェネリックスに関しては戸惑いました。ジェネリッククラスを拡張し、IntelliJのHaxeでメソッドをオーバーライドする
私は、(とりわけ)一般的な引数を受け取り、返すメソッドを持つ汎用スーパークラスT
を持っています。そのスーパークラスの特定のサブクラスでは、そのメソッドをオーバーライドしてその動作を少し増やしたいと思います。 Javaではこれは問題ありません:
public class A<T> {
public T doStuff(T t) {
return t;
}
}
public class B extends A<String> {
public String doStuff(String s) {
System.out.println(s)
return s;
}
}
これは正しくコンパイルされ、機能します。私はhaXeの中で、本質的に同じことをやろうしかしとき:
class A<T> {
public function doStuff(t : T) : T {
return t;
}
}
class B extends A<String> {
public override function doStuff(s : String) : String { //Compilation error
trace(s);
return s;
}
}
IntelliJのは
タイプ文字列があるメッセージとマークされた行にエラー引数の型と戻り値の型の両方を示し、 T
と
ない戻り値の型文字列との互換性と互換性がありません!= T
しかし、とにかくコンパイルされます。 IntelliJ内の私のHaxeセットアップが間違っているのですか?これはHaxe Supportのバグですか?
Haxeは分かりませんが、[doc](https://haxe.org/manual/types-basic-types.html)には「基本型は 'Bool'、' Float'、 'Int'です。 [...] **基本型はHaxeのクラスではありません** "T"はJava *プリミティブ*と同じように ''基本型* int')。 – Andreas
これはMVCだけですが、私の実際の例は異なる(単純ではない)クラスです。同じ問題。単純/非単純型が問題にならないように編集します – Mshnik
サンプルは動的ターゲットで正常にコンパイルされますが、静的(cpp)でコンパイルしていますか?あなたはhaxeのどのバージョンを使用していますか? http://try.haxe.org/#6E8c9 –