【发布时间】:2021-11-11 14:33:21
【问题描述】:
有没有办法从DefaultGroovyMethods 轻松覆盖toSet(Collection<T> self) 方法?
它的实现使用HashMap
public static <T> Set<T> toSet(Collection<T> self) {
Set<T> answer = new HashSet<T>(self.size());
answer.addAll(self);
return answer;
}
但我想使用LinkedHashMap 来保留参数集合中元素的顺序。
我尝试过元编程(已经在各种自定义类中使用过几次),例如
Collection.metaClass.toSet = {
println 'in'
Collection self = (Collection) delegate
Set<Collection> answer = new LinkedHashSet<Collection>(self.size())
answer.addAll(self)
return answer
}
但没有运气(无法进入该关闭)。
任何建议都将受到欢迎。谢谢提前!
ps:我目前正在开发一个 Grails 4.0.3 应用,Groovy 2.5.6
【问题讨论】:
标签: grails groovy overriding default-method