获取Java/Groovy中类属性的类型
我正在Grails上创建一个动态查询。UI将传递一个包含所有条件的JSON对象。我设法做到了:获取Java/Groovy中类属性的类型,java,groovy,Java,Groovy,我正在Grails上创建一个动态查询。UI将传递一个包含所有条件的JSON对象。我设法做到了: def criteria = params.criteria def l = DomainClass.createCriteria().list { for(int k = 0; k < criteria.names().length(); k++) { def names = list[x].names() if(DomainClass.hasProp
def criteria = params.criteria
def l = DomainClass.createCriteria().list {
for(int k = 0; k < criteria.names().length(); k++) {
def names = list[x].names()
if(DomainClass.hasProperty(names[k])) {
eq(names[k], list[x][names[k]])
}
}
}
但是在Java和Groovy中,我都不知道如何处理
if
语句中的条件。有几种方法可以解决这个问题
instanceof
或
以你的例子,你可以做类似的事情
if(DomainClass.getProperty(names[k]).getClass().equals(Date.class))
精确匹配
new Long(1L).getClass().equals(Long.class)
> true
或
您的=
方法(添加了.class
)也应该有效,因为不太可能加载两个不同的长类,但我更喜欢equals
方法
new Long(1L).getClass() == Long.class
> true (most likely)
在Groovy中,
==
如果lef端为非null,则始终调用equals()
。在Groovy中不应该使用equals
。
new Long(1L).getClass().equals(Long.class)
> true
new Long(1L) instanceof Number
> true
new Long(1L) instanceof Long
> true
new Long(1L).getClass() == Long.class
> true (most likely)