public class A {
  private hashtable<String,B>  map = new hashtable<String,B>();
  protected class B {
    public String id;
    public int c = -1;
    public B(String id,int c) {
      this.id =id;
      this.c = c;
    }
    public void test(String id,int c) {
      if(map.containsKey(id)) {
         map.get(id).c = c;
      }
    }
  }
 }
 这里的 map.get(id).c是什么意思?以类B为value,那么get获得的是B类对象?? 
 直接调用c 是因为内部类的关系??

解决方案 »

  1.   

    id是键
    map.get(id)取得的是值,即B
    而B中的c是public 的
    故可以直接调用
      

  2.   

    map.get(id) 这里的id即为key,通过key去拿对应的value,如果没有用泛型这个的value为一object对象,如果给了泛型返回的就是指定类的一个实例,在你的代码中就是B的一个实例。
    既然是B类的实例/对象,就可以直接用这个对象调用c属性(c属性是public的,所以给你访问)。