簡體   English   中英

需要協變返回類型和“真實”class 方差的語言 Scala 如何在 CLR 上運行?

[英]How do languages Scala which need covariant return types and “real” class variance run on the CLR?

CLR 不支持協變返回類型完全變體(即應用於類,不僅是接口和委托),但有針對 CLR 的語言使用這些功能中的一個或兩個。

CLR 是否有一些實用的解決方法來啟用此功能,或者這些語言是否采用某種重寫/擦除/...技術來完全支持其功能集?

可能與 Java 的方式相同(Java 5 在語言級別支持協變返回,但 JVM 不支持它):通過添加合成方法。 下面是 Java 是如何做到的:假設你有這樣的 class:

class Foo implements Cloneable {
    @Override
    public Foo clone() {
        // ...
    }
}

在幕后,生成了兩個clone方法: public Foo clone() (包含真實代碼)和public Object clone() (簡單地返回前者的結果)。 后一種方法(合成的)是如何在 JVM 級別覆蓋clone方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM