在IntelliJ中扩展通用类并覆盖Haxe中的方法

时间:2016-07-17 03:41:10

标签: generics intellij-idea haxe

我在去的时候重新学习Haxe和HaxeFlixel,但是当涉及到泛型时,我遇到了绊脚石。

我有一个泛型超类,其中包含一个方法,它接受并返回一个泛型参数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在arg类型和返回类型的标记行上显示错误,并带有消息

  

Type String与T

不兼容

  

与返回类型String不兼容!= T

然而,无论如何它都会编译。我在IntelliJ中的Haxe设置是否不正确,或者这是Haxe支持中的错误?

1 个答案:

答案 0 :(得分:3)

你的代码很好。它是IntelliJ插件中的一个错误。

恕我直言,您可以尝试使用另一个IDE,它现在不是最好的(对于Haxe),如果您检查存储库,它就不再维护了。 您可以尝试HaxeDevelop(Windows)或VSCode(Windows / Linux / Mac)。