当前位置: 首页 > 知识库问答 >
问题:

Scala类型界限与Foo[_]

廉展鹏
2023-03-14

我有一个班级酒吧[T

但是,calac确实区分了它们。看起来它忘记了边界,并将Bar[_]视为Bar[_

请注意,这在Java中按预期工作,与Scala不同:https://gist.github.com/v6ak/7847548。我想知道Java和Scala之间是否存在一个重要的语义差异,我不知道。我知道有一些差异,例如在具有基元类型的泛型中(特别是当与数组一起使用时),但我不知道与此问题相关的任何内容。

更奇怪的是,我从提到的scala代码中反汇编了字节码(通过reJ),禁用了泛型识别,发现foo方法总是返回Foo。

(我没有使用javap,因为我不能在那里禁用泛型识别。)


共有1个答案

程赞
2023-03-14

您的所有示例都编译在当前里程碑 2.11.0-M7 中。

相关提交:这个和这个。这似乎是在2.11.0-M3中修复的。

 类似资料:
  • 问题内容: 我的一个朋友在Java API(https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html)中找到了这个窍门, 并通过阅读以下文章https://docs.oracle.com/javase/tutorial/java/generics/genTypes.html我可以理解上述行在语法上的含义,但是从给出的示例中我无法弄清

  • 问题内容: 我正在尝试使用scala json库Circe,将其包装在一个简单的特征中以提供往返于json的转换,我对此具有以下要求: 这样做的目的是简单地能够用任何对象调用JsonConverter并将其转换成json之类的东西,但是当我尝试对其进行编译时,我得到以下信息: 我当然可以拥有一个类,打算通过转换器放入的所有内容都继承自该类,但是我有一个印象,大约可以自动生成编码器/解码器? 问题答

  • 问题内容: 摘自Effective Java Chapter 5(泛型): 这两个声明中的哪一个是可取的,为什么?在公共API中,第二个更好,因为它更简单。您传入一个列表(任何列表),该方法交换索引元素。没有类型参数值得担心。通常,如果类型参数在方法声明中仅出现一次,则将其替换为通配符。 我不明白,为什么第二个选项对我的API客户端来说更简单?我可以将相同的参数传递给第一个和第二个方法。第二种方法

  • 主要内容:实例Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型: 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036

  • Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型: 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036