我有一个通用接口,描述了如何访问输出流:
interface IOutput {
function writeInteger(aValue:Int):Void;
}
我有一个基于标准haxe.io.BytesOutput
类的接口的抽象实现:
abstract COutput(BytesOutput) from BytesOutput {
public inline function new(aData:BytesOutput) {
this = aData;
}
public inline function writeInteger(aValue:Int):Void {
this.writeInt32(aValue);
}
}
虽然这个抽象类实现了上述接口,但是在使用时并没有直接引用该接口,如果我像下面这样使用它:
class Main {
public static function out(aOutput:IOutput) {
aOutput.writeInteger(0);
}
public static function main() {
var output:COutput = new BytesOutput();
out(output); // type error
}
}
编译器报错: COutput
应该是 IOutput
。我只能通过使用封装了 BytesOutput
并实现了 IOutput
的通用类来解决这个问题。
我的问题是如何向 Haxe 编译器展示这个抽象类实现了接口。
BytesOutput
,因为输出对象可以是 XML 或 JSON 格式。我宁愿使用一个包装类。 - mepsInt32Writable
而不是BytesOutput
)?但也许最好的解决方案还是创建一个子类/包装类。 :) - Gama11