代码之家  ›  专栏  ›  技术社区  ›  Dr. Hans-Peter Störr

用于在方法调用中显式指定泛型参数的Java语法

  •  41
  • Dr. Hans-Peter Störr  · 技术社区  · 14 年前

    显式给出泛型Java方法的类型参数的语法是什么?

    3 回复  |  直到 6 年前
        1
  •  20
  •   Theodore Norvell    6 年前

    以下是 句法

    <ArgType>genericMethod()
    

    似乎是类型参数 必须 一点一点来

    SomeClass.<ArgType>genericMethod()
    this.<ArgType>genericMethod()
    p.<ArgType>genericMethod()
    super.<ArgType>genericMethod()
    SomeClass.super.<ArgType>genericMethod()
    SomeClass.this.<ArgType>genericMethod()
    
        2
  •  55
  •   Pang Mohammad Imran    11 年前

    根据 Java specification 例如:

    Collections.<String>unmodifiableSet()
    

    (不好意思问和回答我自己的问题-我只是第三次查这个。-)

        3
  •  4
  •   krock    14 年前

    >一个很好的例子,它指定了一个定义它自己泛型类型的泛型方法,它是一个HRFF =“http://java.jun.com /javas/6 /DOCS/API/java/UTL/Cudio.html html toto%%28 t[] % 29”Re=“NoFoLoLoNeFror”> <代码>集合.toRoals< /Cult> < /A>其中方法签名看起来像:

    <t>t[]toarray(t[]a);
    < /代码> 
    
    

    这声明了一个泛型类型t,该类型由参数t[]a在方法调用中定义,并返回t的数组。因此,同一实例可以以泛型方式调用ToArray方法:

    collection<integer>collection=new arraylist<integer>();
    收款。增加(1);
    收款。增加(2);
    
    //调用返回整数的泛型方法[]
    integer[]ints=collection.toarray(new integer[]));
    
    //再次调用泛型方法,这次返回数字[](整数扩展数字)
    number[]nums=集合.toArray(新编号[]);
    < /代码> 
    
    

    也可以看到泛型类型参数

    的Java教程。 Collection.toArray方法签名如下所示:

    <T> T[] toArray(T[] a);
    

    这声明了一个泛型类型t,该类型由参数在方法调用中定义T[] a并返回一个T数组。因此同一实例可以用泛型方式调用ToArray方法:

    Collection<Integer> collection = new ArrayList<Integer>();
    collection.add(1);
    collection.add(2);
    
    // Call generic method returning Integer[]
    Integer[] ints = collection.toArray(new Integer[]{});
    
    // Call generic method again, this time returning an Number[] (Integer extends Number)
    Number[] nums = collection.toArray(new Number[]{});
    

    另外,请参见java tutorial on generic type parameters.