java不支持泛型数组
那为什么我这样做编译器没有提示错误public <T> T[] test(T args[])
{
return null;
}很是不解啊,帮帮忙呗

解决方案 »

  1.   

    你这个定义的是泛型的方法,不是泛型数组,所以才没有报错啊
    泛型:jdk1.5版本以后出现新特性。用于解决安全问题,是一个安全机制。
    ArrayList<String> al=new ArrayList<String>();<String>就是泛型。
    好处:
    1、 将运行时期出现的问题ClassCastException,转移到了编译时期。方便于程序员解决问题,让运行时期问题减少,安全。
    2、 避免了强制转换麻烦。
    泛型格式:通过<>来定义要操作的引用数据类型。在使用java提供的对象时,什么时候写泛型呢?
    通常在集合框架中很常见。
    只要见到<>就要定义泛型。
    其实<>就是用来接收类型的。
    当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
    什么时候定义泛型类?
    当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型来完成扩展泛型方法:
    class Demo
    {
    public <T> void show(T t)
    {
    System.out.println("show"+t);
    }
    public <Q> void print(Q q)
    {
    System.out.println("print:"+q);
    }
    }
    class  GenericDemo4
    {
    public static void main(String[] args) 
    {
    Demo d=new Demo();
    d.show("haha");
    d.show(new Integer(44));
    }
    }特殊之处:静态方法不可以访问类上定义的泛型。
    如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。如:Public static <W> void method(W w)
    {
    }? 通配符。也可以理解为占位符。泛型的限定:
    ? extends E:可以接收E类型或者E的子类型。 上限。
    ? super E:可以接收E类型或者E的父类型。下限。