黑马程序员技术交流社区

标题: 泛型类和泛型方法 [打印本页]

作者: 陈劲松    时间: 2015-9-2 16:52
标题: 泛型类和泛型方法
1.泛型类
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,而现在用泛型类。

定义泛型类之前:
class Worker
{}
class Tool
{
        private object obj;
        public void set(Object obj)
        {
                this.obj = obj;
        }
        public Object get()
        {
                return obj;
        }
}

class Demo
{
        public static void main(String[] args)
        {
                Tool t = new Tool();
                t.set(new Worker());
                Worker w = (Worker)t.get();
        }
}
定义泛型类之后:
class Worker
{}
class Tool<tool>
{
        private tool t;
        public void set(tool t)
        {
                this.t = t;
        }
        public tool get()
        {
                return t;
        }
}
class Demo
{
        public static vod main(String[] args)
        {
                Tool<Worker> t = new Tool<Worker>();
                t.set(new Worker());
                Worker w = t.get();
        }
}

2.泛型方法
泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象就会明确要操作
的数据的类型,类型就固定了。为了让不同方法可以操作不同的不确定的数据类型,可以使
用泛型方法。
如:
class Tool
{
        public <T> void show(T t)
        {
                System.out.println(t);
        }
        public <Q> void show2(Q q)
        {
                System.out.println(q);
        }
}
class Demo
{
        public static void main(String[] args)
        {
                Tool tool = new Tool();
                //这里可以放入不同类型的形参。
                tool.show("hhhh");
                tool.show(4);
                //可以放入不同类型的形参。
                tool.show2("eeee");
                tool.show2(5);
        }
}

注意:对于静态方法,静态方法的访问类型不能是定义在类上的泛型。如果静态方法需要泛
型,可以单独在静态方法上定义新的泛型。


作者: binarycoc    时间: 2015-9-2 17:10
看的都晕了学习中




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