黑马程序员技术交流社区

标题: 关于泛型的问题 为什么在t.getName()处编译出错 [打印本页]

作者: JavaProgrammer    时间: 2015-9-6 15:36
标题: 关于泛型的问题 为什么在t.getName()处编译出错
import java.util.*;
class Generc_Text {
        public static void main(String[] args){
                Utils<Person> u = new Utils<Person>();
                Person p =new Person("张三",23);
                u.println(p);
        }
}
class  Utils<T>{
        public void println(T t){
                System.out.println(t.getName());
        }
        public <Y> void show(Y y){
                System.out.println(y);
        }
}

class Person {
        private String name;
        private int age;
        Person(String name,int age){
                this.name = name;
                this.age = age;
        }
        public void setName(String name){
                this.name = name;
        }
        public String getName(){
                return name;
        }
        public void setAge(int age){
                this.age = age;
        }
        public int getAge(){
                return age;
        }
}
作者: 李玉    时间: 2015-9-6 20:22
编译期时T的类型还未确定,编译器只知道t是一个对象,但并不知道t是Person对象,因而就无法调用Person对象相应的成员方法。由于编译期时编译器知道t是一个引用类型(Object的子类),,因而可以调用hascode,equals,getClass()等方法。




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