我有这种方法:

public V get(K key){
        TableEntry wanted = table[Math.abs(key.hashCode() % table.length)];
        while(wanted.getKey() != key && wanted != null) wanted = wanted.next;
        if(wanted.getKey() == key) return wanted.value;
        return null;
    }


在Eclipse中,返回wand.value带有红色下划线,并且得到消息:无法将表单对象转换为V。我的问题是:为什么可以这样做?我想返回值(值是V型)。这是我的代码:
Java code

最佳答案

为了在Java中使用泛型,您需要使用将要使用的泛型类型声明类。
如果要让TableEntry返回该Object以外的其他类型,则应使用通用类型声明getValue(),在您的情况下,应为:

TableEntry<K,V> wanted = table[Math.abs(key.hashCode() % table.length)];


这将使getValue()返回V(如果不这样声明,则K和V将自动定义为Object)

关于java - 无法访问类的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33451385/

10-12 19:19