使用内部类作为类型参数

尼曼

我需要使用内部类或抽象类型作为外部类型的类型参数,例如下面的简化示例:

trait A[T <: Ordered[T]] {
}

class B extends A[C] { //<-- Compiler error, type C not found.
  class C extends Ordered[C] {
  }
}

我在图书馆遇到了一个非常棘手的设计问题,并且没有找到令人满意的方法来避免这种构造。我尝试了许多不同的方法,从type参数引用内部类,但无济于事。

我的问题是:

  1. 有什么方法可以从外部类的类型实参中引用内部类吗?

  2. 如果不是,是否存在排除这种情况的逻辑矛盾,还是仅仅是编译器和语言规范的限制?

0__

首先,您需要具备C成为内部类的资格,例如,有一个预测:

class B extends A[B#C] {
  class C extends Ordered[C]
}

这会产生“非法循环引用”,因此是编译器的限制

您可以将类型构造函数参数更改A为类型成员:

trait A {
  type T <: Ordered[T]
}

class B extends A {
  class T extends Ordered[T] {
    def compare(that: T): Int = ???
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

泛型类作为带有内部类型的参数

来自分类Dev

泛型类作为带有内部类型的参数

来自分类Dev

在C ++中使用指向内部类对象的指针作为外部类构造函数参数

来自分类Dev

警告:使用内部类时,类型参数E正在隐藏类型E

来自分类Dev

JNI:javah修改作为内部类的参数

来自分类Dev

JNI:javah修改作为内部类的参数

来自分类Dev

模板模板参数,不指定内部类型

来自分类Dev

继承由内部类型参数化的类

来自分类Dev

如何在Java内部类中定义绑定类型参数

来自分类Dev

为什么新类型不使用内部类型的特征?

来自分类Dev

内部类作为休眠组件

来自分类Dev

受保护的内部方法不允许内部类作为参数

来自分类Dev

在内部类中使用外部类实例作为自己?

来自分类Dev

是否可以使用参数化通用内部类?

来自分类Dev

使用反射具有参数调用内部类方法

来自分类Dev

在内部类中使用引用模板参数

来自分类Dev

是否可以使用参数化通用内部类?

来自分类Dev

如何使用AutoMapper动态映射内部类型

来自分类Dev

内部类使用外部类模板参数时编译失败,但仅当使用`ostream`时

来自分类Dev

Python - 内部类的哪些参数?

来自分类Dev

使用类型作为参数Typescript

来自分类Dev

使用枚举作为类型参数

来自分类Dev

使用静态内部类

来自分类Dev

Groovy:如何使用类的内部枚举作为类外部的参数类型

来自分类Dev

将父类的实例变量作为函数的参数传递给内部类

来自分类Dev

使用通用类型参数作为参数

来自分类Dev

使用通用类型参数作为参数

来自分类Dev

内部类通用类型与外部类型相同

来自分类Dev

从匿名指针类型检索内部类型

Related 相关文章

热门标签

归档