遍历是要得到元素的属性为什么要强转类型?

package 练习;

import java.util.ArrayList;

public class Case9 {

public static void main(String[] args) {
Student s1 = new Student("赵大维", 21);
Student s2 = new Student("赵小维", 22);
Student s3 = new Student("赵中维", 23);
Student s4 = new Student("赵微维", 24);

ArrayList list = new ArrayList();

list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);

for(int i=0;i<list.size();i++) {
Student s = (Student)list.get(i);
System.out.println(s.getName()+"-->"+s.getAge());
}
}
}

因为你的ArrayList没有声明泛型的类型,那么存进去的数据全都是按照Object类型存入的,取出来就还是Object类型的,所以需要强制类型转换
ArrayList<Student> list = new ArrayList<Student>();
这么写,就不需要了,因为声明ArrayList的时候,就限制了这个ArrayList里的元素都是Student类型的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-19
ArrayList的元素是object类型,可以放任意类型,
而取出来的时候,你希望使用具体类型的属性,就要告诉编译器你知道这个object具体是哪种类型。本回答被网友采纳
第2个回答  2019-11-19
12345678910111213141516function getHasTitles (parentNode) { var allNodes = parentNode.getElementsByTagName('*'); var length = allNodes.length; var i; var hasTitles = []; var node; for (i = 0; i < length; i++) { node = allNodes[i]; if (node.title) { hasTitles.push(node); } } return hasTitles;} var hasTitles = getHasTitles(document);

jquery得到所有元素
$("*")
第3个回答  2019-11-20
楼上回答的很好,如果你不想在循环里面转换类型的话,
建议把集合定义成泛型,这样就不用转换类型了.

如:ArrayList<Student> list = new ArrayList<Student>();
望采纳
第4个回答  2019-11-19
Js代码
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
var keys=[];//定义一个数组用来接受key
var values=[];//定义一个数组用来接受value
for(var key in obj){
keys.push(key);
values.push(obj[key]);//取得value
alert(eval("obj."+key));//循环内逐一打印value值
}
alert(obj.name);//wjy
alert("keys is :"+keys+" and values is :"+values);
//keys is : name,age,sex and values is : wjy,26,female

使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:

Java代码
Object.prototype.bar = 10;// 修改Object.prototype
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
var keys=[];//定义一个数组用来接受key
var values=[];//定义一个数组用来接受value
for(var key in obj){
keys.push(key);
values.push(obj[key]);//取得value
}
相似回答