如何检查对象以查看其类型并返回强制转换的对象

2023-12-30

我有向其传递对象的方法。在这个方法中,我检查它的类型,并根据类型对它执行一些操作并返回一个 Long。我已经尝试了所有我能想到的方法来做到这一点,但我总是收到几个编译器错误,告诉我它需要某个对象,但得到另一个对象。有人可以向我解释我做错了什么并引导我走向正确的方向吗?到目前为止我所尝试的如下:

  override def getInteger(obj:Object) = {
    if (obj.isInstanceOf[Object]) null
    else if (obj.isInstanceOf[Number]) 
      (obj:Number).longValue()
    else if (obj.isInstanceOf[Boolean]) 
      if (obj:Boolean) 1 else 0
    else if (obj.isInstanceOf[String]) 
      if ((obj:String).length == 0 | (obj:String) == "null") 
        null
      else
          try {
            Long.parse(obj:String)
          } catch {
            case e: Exception => throw new ValueConverterException("value \"" + obj.toString() + "\" of type " + obj.getClass().getName() + " is not convertible to Long")        
          }
  }

模式匹配会让它变得更好。

def getInteger(obj: Any) = obj match {
  case n: Number => n.longValue
  case b: Boolean => if(b) 1 else 0
  case s: String if s.length != 0 && s != "null" => s.toLong
  case _ => null
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查对象以查看其类型并返回强制转换的对象 的相关文章

随机推荐

  • 使用fplot函数时如何向量化?

    我正在使用 fplot 我也可以使用绘图 我刚刚找到了更多 fplot 的例子 我想绘制 y m x 形式的两条直线 其中 m V1 和 V2 V1 和 V2 是标量 下面的代码给了我一个错误 Matlab代码 fplot x V1 4 4
  • PHP 文件上传:mime 或基于扩展的验证?

    当我尝试处理文件上传时 是否应该根据文件 MIME 类型或文件扩展名运行验证 这两种文件验证方式的优缺点是什么 而且 我还应该担心其他安全问题吗 这些天我依赖 MIME 类型 但这篇文章中获得最多赞成票的答案 PHP中的文件上传问题 htt
  • 如何从 Visual Studio PTVS 中运行命令?

    我正在使用 Visual Studio 2012 和 PTVS 来处理 locustio 和 suds 我在 Visual Studio 中使用 virtualenv 设置了一个环境 并安装了 locustio suds 和所有相关的依赖项
  • zClip - ZeroClipboard.swf 已删除 - 需要新文件

    我在用着zClip http www steamdev com zclip 在我的网站上复制文本框中的一些内容 我一切正常 但现在 在不更改任何内容的情况下 它停止工作 原因是文件的主机零剪贴板 swf http zeroclipboard
  • Boost tribool 在 C++ 中导致从右到左的条件计算

    据我所知 C 在条件语句中总是从左到右计算 if A B C A首先会被评估 B第二 依此类推 然而 以下示例表现出一些奇怪的行为 include
  • 如何向基于 Visual Studio 的应用程序添加 C/C++ 语言服务?

    我正在尝试创建一个基于 Visual Studio shell 的特定于域的 IDE 我跟着走查 https learn microsoft com en us visualstudio extensibility shell walkth
  • Laravel Eloquent 选择 CASE?

    有没有在 PHP 和 Laravel Eloquent 方面有经验的人可以帮助我解决这个问题 我试图在 raw 方法中注入一个 CASE WHEN END 似乎完全被忽视了 现有的文档还没有 我尝试了几种不同的方法 但都没有成功 我正在努力
  • OpenMP 在 High Sierra LLVM 中可用吗?

    Apple 在 macOS 10 13 High Sierra 中提供的默认 LLVM 中 OpenMP 终于可用了吗 它已经在主 LLVM 中可用一年多了 问这个问题的另一种方式可能是新的 Apple LLVM 基于哪个版本的 LLVM
  • 发送方和接收方是否隐含与 MPI_BCAST 同步?

    当调用MPI BCAST时 是否有任何隐含的同步 例如 如果发送方进程要先于其他进程到达 MPI BCAST 它是否可以执行 BCAST 然后在没有任何确认的情况下继续 最近的一些测试代码如下 program test include mp
  • const 和非常量函数的重载如何工作?

    The STL充满了这样的定义 iterator begin const iterator begin const 由于返回值不参与重载决策 因此这里唯一的区别是函数是const 这是重载机制的一部分吗 编译器用于解析如下行的算法是什么 v
  • 哪个分布式缓存?

    我需要找到一种方法让两个应用程序可以使用相同的缓存 经过一些快速研究后 我们似乎需要一个分布式缓存来实现这一点 进一步谷歌搜索发现了许多解决方案 NCache http www alachisoft com ncache ncache ex
  • 如何在输入特定单词时提醒用户

    我是 Javascript 新手 正在创建我的第一个 Chrome 扩展 这实际上只是一个个人挑战 我想在用户在任何网站上键入某些单词时提醒他们 也许是 Google 或 Bing 上的搜索输入字段 或者也许是当他们输入 Facebook
  • 嵌入式 Linux 上的 QT5 eglfs(TI am355x EVM 入门套件)

    我刚刚为 ARM 交叉编译了 QT 5 2 1 并在 TI AM335x EVM 入门套件 板上使用它 我想使用eglfs平台 但不幸的是它在屏幕上显示了一些伪影 我只是制作了一个简单的程序来显示问题并捕获了我的屏幕的一些照片 该程序基本上
  • 真的很简单的Python HTTP代理吗? [复制]

    这个问题在这里已经有答案了 我到处寻找并发现了数百万个 python 代理服务器 但没有一个完全符合我的要求 我认为 s 一般来说 我对 python 有相当多的经验 但我对 HTTP 协议的深层秘密世界还很陌生 我认为可能有用的是一个非常
  • MVC-4 文件上传成功消息

    我在上传文件后显示成功消息时遇到了一些问题 我首先尝试使用 ViewBag Message 它运行良好 并在文件上传后显示成功消息 这就是我想要的 但后来我找不到一种方法 几秒钟后将该消息更改回 选择要上传的文件 以便用户了解他现在可以上传
  • 可以在 Twilio 中保存短信并安排发送吗?如果没有,我该如何完成这件事?

    我刚刚注册了 Twilio 试用帐户 我没有看到任何功能说明如何创建和保存多条短信供以后使用以及安排何时将它们发送到群组 这可能吗 或者有没有更好的软件可以做到这一点 Twilio 传道者在这里 查看您的个人资料 您的首选语言似乎是 PHP
  • “For”循环第一次迭代

    我想询问是否有一种优雅的 pythonic 方式在第一次循环迭代中执行某些函数 我能想到的唯一可能性是 first True for member in something get if first root copy member fir
  • 使用 CMake 和 GCC 4.1.2 链接到 stdc++

    我正在开发一个库 需要确保它可以使用 4 1 2 进行编译 我知道 它没有给我带来任何乐趣 因此 我在 Fedora 14 机器上下载 编译并安装了 GCC41 现在在 CMake 中我只将以下内容更改为变量 CMAKE CXX COMPI
  • JDBC 调用以数组为参数的存储过程

    我正在尝试使用 java 代码调用下面的过程 但我收到了几个错误 主要是类型转换 我想我在某个地方搞砸了 有人可以看一下吗 这是我第一次这样做 一点帮助就太好了 proc DECLARE car details tab car detail
  • 如何检查对象以查看其类型并返回强制转换的对象

    我有向其传递对象的方法 在这个方法中 我检查它的类型 并根据类型对它执行一些操作并返回一个 Long 我已经尝试了所有我能想到的方法来做到这一点 但我总是收到几个编译器错误 告诉我它需要某个对象 但得到另一个对象 有人可以向我解释我做错了什