Java:如何访问内部类的自己的类型

时间:2015-03-25 20:28:17

标签: java

我正在尝试使用数组实现基本符号表。

当我尝试实现一个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;
    }

1 个答案:

答案 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