加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

这个Scala代码的Java等价物是什么?

发布时间:2020-12-16 18:34:13 所属栏目:安全 来源:网络整理
导读:Scala中这些特性的 Java等价物是什么? trait Visitor { type X type S:Strategy type R[v:Visitor] = (S{type X = Visitor.this.X;type V=v})#Y}trait Strategy { type V:Visitor type X type Y} 我将战略特征翻译为: public interface StrategyV extends
Scala中这些特性的 Java等价物是什么?

trait Visitor {
  type X
  type S<:Strategy
  type R[v<:Visitor] = (S{type X = Visitor.this.X;type V=v})#Y
}

trait Strategy {
  type V<:Visitor
  type X
  type Y
}

我将战略特征翻译为:

public interface Strategy<V extends Visitor<?,?,?>,X,Y> {

}

我尝试将特质访客翻译成:

public interface Visitor<X,S extends Strategy<?,R ?????> {
}

如您所见,我不知道如何理解/翻译访客特征中的类型R.什么是类似的Java等价物?

解决方法

我很确定在Java中写一个等价物是不可能的,它的类型系统还不够复杂. R [v&lt ;: Visitor]是一种更高级的通用类型,它需要沿着这些方向的东西:

interface Visitor<X,R<? extends Visitor<?,?>> extends ...>

但这不可能用Java表达,因为它在泛型中没有更高级的类型.而且甚至没有提到(S {type X = Visitor.this.X; type V = v})#Y bit是一个具有细化的结构类型(据我记得,它被称为这样).除了Scala之外,我不知道任何其他语言.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读