java 泛型的问题,

map集合已经用泛型指定了值是ArrayList类型集合,并且集合里装的是Student类型,为什么通过get(Objectkey)方法获取值就是Object类型的?初学... map集合已经用泛型指定了值是ArrayList类型集合,并且集合里装的是Student类型,为什么通过get(Object key)方法获取值就是Object类型 的?初学者,多多指教,另外Student类如下。
public class Student {
private String name;
private int score;
private String sex;
public Student(){}
public Student(String name,int score,String sex){
this.name=name;
this.score=score;
this.sex=sex;
}
public void setName(String name){
this.name=name;
}
public void setScore(int score){
this.score=score;
}
public void setSex(String sex){
this.sex=sex;
}
public String getName(){
return this.name;
}
public int getScore(){
return this.score;
}
public String getSex(){
return this.sex;
}

}

import java.util.*;

class StuInfo {
public static void main(String[] args) {
ArrayList<Student> list1 = new ArrayList<Student>();
ArrayList<Student> list2 = new ArrayList<Student>();
ArrayList<Student> list3 = new ArrayList<Student>();
Scanner in = new Scanner(System.in);
Map<String, ArrayList> map = new HashMap<String, ArrayList>();
Student stu0 = new Student("hjs", 77, "男");
Student stu1 = new Student("ytg", 87, "男");
Student stu2 = new Student("mn", 74, "男");
Student stu3 = new Student("uyjs", 67, "男");
Student stu4 = new Student("jhs", 67, "男");
Student stu5 = new Student("kjn", 77, "男");
Student stu6 = new Student("hvfs", 77, "男");
Student stu7 = new Student("ytfs", 86, "男");
Student stu8 = new Student("jns", 77, "男");
Student stu9 = new Student("hyt", 74, "男");

list1.add(stu0);
list1.add(stu1);
list1.add(stu2);
list1.add(stu3);
list2.add(stu4);
list2.add(stu5);
list2.add(stu6);
list3.add(stu7);
list3.add(stu8);
list3.add(stu9);

map.put("一年级", list1);
map.put("二年级", list2);
map.put("三年级", list3);

do {
System.out.println("输入班级名称:");
String s = in.next();
System.out.println(s + "学生列表:");

//System.out.println(list1);
//System.out.println(map.get(s));
for (Student i : map.get(s)) { //这里报错;
System.out.println(i.getName() + "\t" +i.getScore() + "\t"
+i.getSex());
}
System.out.println("是否继续yes1,no2");
} while (in.nextInt() == 1);

}
}
展开
 我来答
AlbertEricS
2017-02-05 · TA获得超过591个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:67.1万
展开全部
你的代码问题不大,稍作修改即可。
有两种解决方法:
方法一:
更改for循环为for(Object i : map.get(s){
在里面再将i强制转化为Student类型即可
}
方法二:
只需要更改一下HashMap创建行,你只指定了Map的value类型为ArrayList,而没有进一步指定ArrayList的泛型为Student;你给它加个泛型进行了,这种方法应该是你想要的。
将以下这一行
Map<String, ArrayList> map = new HashMap<String, ArrayList>();

改为:
Map<String, ArrayList<Student>> map = new HashMap<String,ArrayList<Student>>();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式