黑马程序员技术交流社区

标题: 泛型问题 [打印本页]

作者: ztwztw    时间: 2014-1-4 10:07
标题: 泛型问题
public class Text1 {
public static void main(String[] args){
     List<Person> list = new ArrayList<Person>();
        list.add(new Person("zhangsan",34));
        list.add(new Person("zhaan",36));
        list.add(new Person("zhadfan",24));
        list.add(new Person("zhang",56));
        Iterator<Person> it = list.iterator();
        while(it.hasNext()){
                //System.out.println((Person)it.next().getName);//为什么这么写不行啊
                Person p =it.next();
                System.out.println(p.getName()+"....."+p.getAge());
        }
       
}
}
class Person{
        private String name;
        private  int age;
        Person(String name,int age){
                this.name = name;
                this.age = age;
        }
        public  String getName(){
                return name;
        }
        public int getAge(){
                return age;
        }
}
作者: 几番意难相付    时间: 2014-1-4 10:29
本帖最后由 几番意难相付 于 2014-1-4 12:01 编辑

怎么不行?getName是你定义的方法,调用的方法后要跟一对小括号,你的小括号呢?
//System.out.println((Person)it.next().getName);//为什么这么写不行啊
System.out.println(((Person)it.next()).getName());这样写再看看
作者: 其LovE斤    时间: 2014-1-4 10:51
本帖最后由 其LovE斤 于 2014-1-4 10:54 编辑

//System.out.println((Person)it.next().getName);//为什么这么写不行啊
public  String getName()   注意你这个方法返回的是String
((Person)it.next().getName);  你这里是想将String 强转成Person
也刚注意到。。你那里也缺小括号,但是你加了小括号也肯定不行。类型无法转换的。

作者: ztwztw    时间: 2014-1-4 19:30
我的意思是想把it.next转换成person,怎么办啊

作者: 高亮亮    时间: 2014-1-4 19:37
((Person)it.next()).getName()
这样就可以.想做不是太明确作用范围的转换,调用,可以用小括号辅助确定作用范围.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2