Generics Groovy getAt方法中的泛型类型
我正在尝试自己用Groovy MultiMap实现,使用附带的代码。我更喜欢使用Java泛型。但是我对getAt(K)方法有问题 方法get()可以正常工作。但是如果我使用主类中的getAt(): println consPersonsOld.getAt('1111') 调用多重映射的gatAt方法:Generics Groovy getAt方法中的泛型类型,generics,groovy,Generics,Groovy,我正在尝试自己用Groovy MultiMap实现,使用附带的代码。我更喜欢使用Java泛型。但是我对getAt(K)方法有问题 方法get()可以正常工作。但是如果我使用主类中的getAt(): println consPersonsOld.getAt('1111') 调用多重映射的gatAt方法: class MultiMap<K,V> { private Map<K,List<V>> map public List<V> g
class MultiMap<K,V> {
private Map<K,List<V>> map
public List<V> get(K k){
if(map.containsKey(k)){
return (map[k])
}else{
return([])
}
}
//Instead of [k]
public List<V> getAt(K k) {
if(map.containsKey(k)){
return (map[k])
}else{
return([])
}
}
}
类多重映射{
私人地图
公共列表获取(K){
if(地图容器(k)){
返回(映射[k])
}否则{
返回([])
}
}
//而不是[k]
公共列表getAt(K){
if(地图容器(k)){
返回(映射[k])
}否则{
返回([])
}
}
}
我将获得附加错误:
线程“main”groovy.lang.MissingPropertyException中出现异常:类:com.tcc.util.MultiMap没有这样的属性:1111
位于org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:67)
位于org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$pogometamethodsiteNounwrapnocerc.invoke(PogoMetaMethodSite.java:225)
位于org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:70)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
com.tcc.GroAiaAdd3Main.main(GroAiaAdd3Main.groovy:84)
显然,代码对泛型类型K有问题,因为当我用字符串替换K时,一切都正常。。。。
您知道如何解决此问题吗?如何初始化实例?非常感谢您的提示…最初在构造函数中只是map=[:]当前构造函数工作:public MultiMap(){//map=[:]map=new HashMap()}