Java Cannot implement a function in Map ADT interface that takes Pair class as its generic parameter -


i created map interface has generic function entries().

// return iterable collection of key-value entries in map public arraylist<pair<keytype, valuetype>> entries(); 

the problem is, when try implement interface error in interface file @ entries() function: bound mismatch: type keytype not valid substitute bounded parameter <keytype extends comparable<keytype>> of type pair<keytype,valuetype>

my implementation of function shown below:

public arraylist<pair<keytype, valuetype>> entries(){     arraylist<pair<keytype, valuetype>> list = new arraylist<pair<keytype, valuetype>>();     preorderlist (root, list);     return list; } 

how can solve problem?

you left generic bound out of interface declaration. since pair requires keys comparable each other (keytype extends comparable<keytype>), map need reiterate bound in keytype declaration in order use pair keytype. may need bound valuetype if pair bounds it.

interface map <keytype extends comparable<keytype>, valuetype> { ... } 

under generic type erasure, pair's keytype replaced comparable. if not bound map's keytype, replaced object, not assignable comparable without narrowing cast can potentially fail.


Comments

Popular posts from this blog

python - Installing PyDev in eclipse is failed -

PHP OOP-based login system -

c# - Nested Internal Class with Readonly Hashtable throws Null ref exception.. on assignment -