【问题标题】:Expression of type Pointer[Float] doesn't conform to expected type Pointer[Float] in ScalaPointer[Float] 类型的表达式不符合 Scala 中预期的 Pointer[Float] 类型
【发布时间】:2015-06-18 02:15:51
【问题描述】:

我是 Scala 新手,我一直在尝试使用用 Java 实现的库 Bridj。
这是代码(allocateFloats是org.bridj.Pointer类中的一个方法)

import org.bridj.Pointer
import org.bridj.Pointer._

class EstimatingPi {
  def main(args: Array[String]) {
    val n: Int = 1024
    val aPtr : Pointer[Float] = allocateFloats(n)
  }
}

这将导致“Pointer[Float] 类型的表达式不符合预期的 Pointer[Float] 类型”。但是如果我不指定 aPtr 的类型,如下所示,代码会编译。

    val aPtr = allocateFloats(n)

我试图在网上找到解决方案,但问题大多类似于“someClass[T1] 类型的表达式不符合预期的 someClass[T2] 类型”。但就我而言,它们是同一类型。
非常感谢任何帮助。

【问题讨论】:

    标签: java scala bridj


    【解决方案1】:

    其中一个可能是java.lang.Float。你可能需要

    val aPtr: Pointer[java.lang.Float] = allocateFloats(n)
    

    如果从 allocateFloats 文档中看不出来,你可以通过类似的操作找出它是什么类型

    allocateFloats(0).getClass.getName
    

    这会给你全名,前面是[L,后面是;,例如

    [Ljava.lang.Float;
    

    【讨论】:

    • 是的,就是这样。非常感谢!
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多