【问题标题】:storing and retrieving an instance of a class in a hashtable在哈希表中存储和检索类的实例
【发布时间】:2014-08-07 09:25:45
【问题描述】:

所以我试图在哈希表中存储一个类的实例:

 public void insertEdge(String val1, String val2, int len) {
       Hashtable ref = new Hashtable(10, 3); 

       if(!ref.containsKey(val2))
       {
           Vert temp = new Vert(val2);
            ref.put(val2, temp);
           curNod++;
       }

       ref.get(val1).firstEdge = new Edge(ref.get(val2), ref.get(val1).firstEdge, len);
}

当我在上面运行程序时,编译器返回以下错误:

error: cannot find symbol

       ref.get(val1).firstEdge = new Edge(ref.get(val2), ref.get(val1).firstEdge, len);

我还在学习哈希表,所以要轻松一点。 据我了解,您应该能够将一个类的实例存储在哈希表中并检索它,firstEdge 是我的类Vert的一个变量,所以理论上我在技术上应该能够毫无问题地检索它!

这是Vert

class Vert {
   public Edge firstEdge;
    public String name; 

   public Vert() {
      firstEdge = null;

   }

    public Vert(String n)
    {
        firstEdge = null;
        name = n;   
    }
}

【问题讨论】:

  • val1val2 是什么?您也可以发布代码的相关部分吗?
  • 我已经更新了问题以包括 val1val2 但它们是用作哈希表键的字符串

标签: java hashtable


【解决方案1】:

你没有注释你的哈希表。所以ref.get(val1) 返回一个Object 类,而您正试图获取firstEdge,它不是Object 类的属性。您要么必须像 Hashtable<String, Vert> ref = new Hashtable<String, Vert>(10, 3); 那样初始化哈希表,要么强制转换 ((Vert)ref.get(val1)).firstEdge

【讨论】:

  • 好的,这正是我所需要的和很好的解释。谢谢。最后一个问题,object 不是 Java 中所有其他对象的父类吗?不应该和我写的类兼容吗?
  • 是的,当然它是父类,但是父类对子字段没有可见性。孩子可以看到父母的公共和受保护的财产。
猜你喜欢
  • 2023-03-22
  • 2011-02-27
  • 2017-01-22
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多