我正在尝试使用数组实现基本符号表。
当我尝试实现一个get方法,其返回类型在我的内部类中定义时,但java不允许我这样做。 ħ
我如何实现这一目标?
错误:无法解析符号'Key'
public class ST2 {
Item[] items;
int N;
public class Item<Key extends Comparable, Value>{
public Key key;
public Value value;
public Item(Key key, Value value){
this.key = key;
this.value = value;
}
//Some other methods.
}
public ST2(int capacity){
items = (Item[])new Object[capacity];
}
//Some other Method
public Key get(Key key){ //ERROR HERE: cannot resolve symbol 'Key'
return items[some_index].key;
}
答案 0 :(得分:4)
您需要在Key
上定义ST2
,而不是在Item
上定义:
public class ST2<K extends Comparable<K>, V> {
Item[] items;
int N;
public class Item {
public K key;
public V value;
public Item(K key, V value) {
this.key = key;
this.value = value;
}
}
public ST2(int capacity) {
items = (Item[]) new Object[capacity];
}
public K get(int index) {
return items[index].key;
}
}
此外,泛型通常是单个字母。
我认为你做的是做某种练习/家庭作业,因为已经有一个Java类可以将(可比较的)键映射到值:http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html