【问题标题】:Groovy / grails how to determine a data type?Groovy/grails如何判断一个数据类型?
【发布时间】:2011-01-04 20:23:06
【问题描述】:

在 groovy 中确定数据类型的最佳方法是什么?

如果是日期等,我想以不同的方式格式化输出。

【问题讨论】:

    标签: groovy types


    【解决方案1】:

    要确定对象的类别,只需调用:

    someObject.getClass()
    

    在大多数情况下,您可以将其缩写为 someObject.class。但是,如果您在Map 上使用它,它将尝试使用键“class”检索值。因此,我总是使用getClass(),即使它有点长。

    如果您想检查对象是否实现了特定接口或扩展了特定类(例如 Date),请使用:

    (somObject instanceof Date)
    

    或检查一个对象的类是否完全是一个特定的类(不是它的子类),使用:

    (somObject.getClass() == Date)
    

    【讨论】:

    • instanceof 非常适合基于接口进行过滤。
    • 至少在最新的Groovy(2.3.7)中,我们也可以写someObject.class
    • @LaurentBERNABE 在大多数情况下都有效,但并非在所有情况下都有效,例如Map 实例
    • 你是对的:在这种情况下我们得到 null 。为错误道歉。
    • 那这是什么? def test = {} println test.getClass() class Script1$_run_closure1 ??
    【解决方案2】:

    检查对象类型的简单常规方法:

    somObject in Date
    

    也可以应用于接口。

    【讨论】:

      【解决方案3】:

      只是为 Dónal 的答案添加另一个选项,您仍然可以使用旧的 java.lang.Object.getClass() 方法。

      【讨论】:

        【解决方案4】:

        您可以使用 Membership Operator isCase() 这是另一种时髦的方式:

        assert Date.isCase(new Date())
        

        【讨论】:

          【解决方案5】:

          somObject instanceof Date

          应该是

          somObject instanceOf Date

          【讨论】:

          • 这是不正确的。 instanceof 应该全部小写。
          猜你喜欢
          • 1970-01-01
          • 2012-06-16
          • 2012-06-07
          • 1970-01-01
          • 1970-01-01
          • 2017-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多