Haxe访问Class <T>静态字段

我有3个类,我希望能够从返回的Class<access>中调用静态函数。我想根据条件选择类类型。

class access {
    public static function get(item: Int): Int { return -1; }

    public static function getaccessType(): Class<access> {
        if(Client.hasConnection())
            return Remote;
        else return Local;
    }
}
class Remote extends access {
    override public static function get(item: Int): Int { return Server.getItem(item); }
}
class Local extends access {
    override public static function get(item: Int): Int { return Client.getItem(item); }
}
pan1955 回答:Haxe访问Class <T>静态字段

您不能在Haxe中覆盖静态函数。 但是,您可以通过简单地删除“远程”和“本地”中的替代来实现您要尝试的操作

,

可以单例完成。

但是,仍然有一个问题可能与Haxe中的这种功能是否存在有关。

,

根据目标,您也许可以将类强制转换为接口/ typedef,从而以一种类型安全的方式提取值。 “覆盖”不适用于静态方法

class Test {
    static function pick(z:Bool):HasGetItem {
        return z ? cast A : cast B;
    }
    static function main() {
        trace("Haxe is great!");
        trace(pick(false).getItem(1));
        trace(pick(true).getItem(2));
    }
}
@:keep class A {
    public static function getItem(i:Int):Int return 10;
}
@:keep class B {
    public static function getItem(i:Int):Int return 5;
}
typedef HasGetItem = {
    getItem:Int->Int
}

https://try.haxe.org/#b2b87

本文链接:https://www.f2er.com/3161643.html

大家都在问