2016-07-17 11 views
0

私は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のバグですか?

+0

Haxeは分かりませんが、[doc](https://haxe.org/manual/types-basic-types.html)には「基本型は 'Bool'、' Float'、 'Int'です。 [...] **基本型はHaxeのクラスではありません** "T"はJava *プリミティブ*と同じように ''基本型* int')。 – Andreas

+0

これはMVCだけですが、私の実際の例は異なる(単純ではない)クラスです。同じ問題。単純/非単純型が問題にならないように編集します – Mshnik

+0

サンプルは動的ターゲットで正常にコンパイルされますが、静的(cpp)でコンパイルしていますか?あなたはhaxeのどのバージョンを使用していますか? http://try.haxe.org/#6E8c9 –

答えて

2

コードは問題ありません。 IntelliJプラグインのバグです。 IMHO、別のIDEで作業しようとする可能性があります。これは現在では最高のものではありません。また、リポジトリをチェックすると、それはもはや維持されません。 haxedevelop(windows)http://www.haxedevelop.org/またはvscode(linux/mac)を試すことができますhttps://github.com/vshaxe/vshaxe 希望に役立ちます。

関連する問題