Общий тип в методе Groovy getAt - PullRequest
       6

Общий тип в методе Groovy getAt

0 голосов
/ 15 октября 2019

Я пытаюсь реализовать в Groovy MultiMap сам, используя прилагаемый код. Я бы предпочел использовать Java Generics. Но у меня проблема с методом getAt (K k).

Метод get () работает без проблем. Но если я использую getAt () из основного класса:

println consPersonsOld.getAt ('1111')

вызов метода gatAt MultiMap:

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([])
        }
    }
}

я получуошибка:

Исключение в потоке "main" groovy.lang.MissingPropertyException: такого свойства нет: 1111 для класса: com.tcc.util.MultiMap в org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap (ScriptBytecodeAdapter.java: 67) в org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite $ PogoMetaMethodSiteNoUnwrapNoCoerce.invoke (PogoMetaMethodSite.java:225) в org.codehausMetahotaThotaTetaTetaTetaorg.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:47) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:116) в org.coderun.timeCallSite.AbstractCallSite.call (AbstractCallSite.java:128) в com.tcc.GroAiaAdd3Main.main (GroAiaAdd3Main.groovy: 84)

Видимо, код не работает сОбобщение типа K, например, когда я заменяю K на String, все в порядке .... У вас есть идея, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...