如何在Groovy变量中存储类的列表/数组?

时间:2017-08-26 01:10:50

标签: groovy

我想将一个Java异常类的列表/数组(例如NullPointerException,一些自定义异常类等)存储到Groovy列表/数组中,但是我一直遇到转换问题或者MissingPropertyException:

class Foo {
  Exception[] foo
  List bar

  def setFoo(Exception[] values) {
    this.foo = values
  }

  def setBar(List values) {
    this.bar = values
  }
}

f = Foo()
f.setFoo([NullPointerException.class])
f.setBar(Arrays.asList(NullPointerException.class))

但我似乎无法做到正确。非常感谢任何指针。谢谢!

2 个答案:

答案 0 :(得分:1)

的更改
class Foo {
    Class[] foo
    List bar

    def setFoo(Class[] values) {
        this.foo = values
    }

    def setBar(List values) {
        this.bar = values
    }


}
    def f = new Foo()
    f.setFoo([NullPointerException.class] as Class[])
    f.setBar(Arrays.asList(NullPointerException.class))
  1. foo应该是Class而不是Exception的数组。 (Exception是异常类的实例)
  2. 您需要明确地将列表转换为Class数组,它为您执行从列表到数组的转换。

答案 1 :(得分:0)

只需def list = [UserClass1, UserClass2]即可完成。在groovy中,甚至不需要.class

您的代码应如下所示,这不是很简单吗?

class Foo {
  def bar
}

def f = new Foo(bar: [NullPointerException, RuntimeException])
assert f.bar instanceof List<Class>
assert (f.bar as Class[]) instanceof Class[]

您可以在线快速尝试 demo