java中哈希列表的字符串对象不匹配

java中哈希列表的字符串对象不匹配,java,hashtable,type-mismatch,Java,Hashtable,Type Mismatch,我的哈希表有问题。我在方法中使用的for循环工作正常,但main中的同一个循环给出了无法将字符串转换为对象的错误。如果存在不匹配,为什么我的方法不给出错误 我将写下hashlist对象的声明。main中的循环和方法 声明: private static Hashtable hashlist2; hashlist2 = new Hashtable<String,Course>(); 改变 private static Hashtable hashlist2; hashlist2 =

我的哈希表有问题。我在方法中使用的for循环工作正常,但main中的同一个循环给出了无法将字符串转换为对象的错误。如果存在不匹配,为什么我的方法不给出错误

我将写下hashlist对象的声明。main中的循环和方法

声明:

private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>();
改变

private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>()


使用原始类型哈希表时,编译器不知道键的类型为String,因此forString courses:hashlist2.keySet无法通过编译。对于原始哈希表,假定键的类型为Object。

,因为传递给printmap的参数的类型为Hashtable hashlist,而您主要声明了私有静态Hashtable hashlist2;hashlist2=新的哈希表;这是非泛型版本,这就是为什么当您在for循环中迭代时,您得到的是对象而不是字符串,您可以通过私有静态哈希表hashlist2修复它

您正在使用原始类型。尝试使用私有静态哈希表hashlist2;我试着给你们指出正确的方向,但似乎我需要更清楚。堆栈溢出不是一个论坛,而是一个问答网站,所以不要在你的问题中添加//question is SOLVED///[解释问题]。如果某个答案解决了你的问题,你应该。如果没有一个答案能解决你的问题,但你找到了一个解决方案,就把它作为单独的答案贴出来。
            for(String courses : hashlist2.keySet()){//mismatch occurs here
                if(courses.equals(coursecode)){
                ((Course) hashlist2.get(courses)).print();
                    check=true;//means "yeah we find a course"
                    break;//and break there no more loop needed
                }                   
            }
private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>()
private static Hashtable<String,Course> hashlist2;
hashlist2 = new Hashtable<String,Course>()