当前位置: 首页 > 面试题库 >

为什么绑定参数T <:Comparable [T]的类型参数对于T = Int失败?

有睿
2023-03-14
问题内容
scala> class Foo[T <: Comparable[T]](val x : T)
defined class Foo

scala> (3: Int).asInstanceOf[Comparable[Int]]  
res60: java.lang.Comparable[Int] = 3

scala> new Foo(3)                              
<console>:13: error: inferred type arguments [Int] do not conform to class Foo's type parameter bounds [T <: java.lang.Comparable[T]]
       new Foo(3)
       ^

第二个表达式是类型擦除的结果吗?

我将如何定义Foo,以便可以使用Int参数化它,但仍然能够对其实例变量执行一些排序行为?


问题答案:

使用视图绑定。

Welcome to Scala version 2.8.0.final (Java HotSpot(TM) Client VM, Java 1.6.0_21).
Type in expressions to have them evaluated.
Type :help for more information.

scala> class Foo[T <% Comparable[T]](val x : T)
defined class Foo

scala> new Foo(3)
res0: Foo[Int] = Foo@9aca82


 类似资料:
  • 问题内容: 我在Eclipse(最新版本)中收到以下代码的警告。 该警告出现在“ A”中的“ T”处,并显示:“类型参数T隐藏了类型T”。 奇怪的是,以下代码不生成任何错误或警告。 但是现在我不能在告诉它T是什么类型的同时扩展A了。 我完全感到困惑。有人知道为什么会这样吗?谢谢。 问题答案: 您是否在某个地方有一个名为的类或接口,或者您在某个地方将其用作具体的类型名称,而不是用作类型参数(这意味着

  • 主要内容:精确数字类型,数字类型,日期和时间类型,字符串,Unicode字符串,二进制字符串,T-SQL中使用的其他数据类型,T-SQL中流量控制的关键词SQL Server 中的数据类型是一个属性,它生成对象的数据。每个变量、列和表达式都与 T-SQL 中的数据类型相关。创建表时将根据需要为基于列的表选择特定的数据类型。 SQL Server 有七大类,包括多种数据类型。 精确数字类型 类型 最小值 最大值 Bigint -9,223,372,036,854,775,808 9,223,372

  • 所以我有一个名为ExpandableArrayList的类,它实现了ListInterface。这个ArrayList填充了Item类型的实例(它表示我的泛型类型T)。class Item实现Comparable,并具有以下属性:String itemNo、String Item Name、double price和int quantity。 一个名为CheckLimit的方法应该检查列表中的任何

  • 问题内容: 的Java,C#和打字稿(亦称语言的太阳/ Hejlsberg家庭)使用,,等来表示泛型类型参数。从表面上看,这是因为代表“ Type”,然后跟随字母。 在另一方面,Scala的使用,,等,和OCaml中和Haskell的使用,和。 这些约定从何而来?难道是因为函数式语言更接近数学证明,在那里,和被用约定? 问题答案: 在标准Java SE API中,设计人员通常选择一个与类型参数的含

  • 我试图在Rust中实现一个责任链: 链接到操场 臭名昭著的信息是: 编译playground v0.0.1(/playground)错误[E0308]:不匹配的类型- 有关此错误的更多信息,请尝试。错误:由于以前的错误,无法编译 我不明白为什么编译器抱怨期待

  • 文件名:SimpleCalculator活动。JAVA Xml文件名:simple_calculator。xml 我收到错误消息Data Binding Android-Type参数T的上限不兼容:行