代码之家  ›  专栏  ›  技术社区  ›  Kihats

Java泛型:返回另一类型的类型

  •  0
  • Kihats  · 技术社区  · 7 年前

    这可能是另一个问题的副本,但我已经搜索过,但无法得到我想要的问题。如果有类似的问题,请告诉我。

    是否可以返回泛型的泛型?我的意思是:

    public <T,K> T<K> myMethod(Class<T> classT, Class<K> classK) {
       //...method implementation
    }
    

    所以如果我用 List 和一个 Integer 工作方式如下:

    List<Integer> listOfIntegers = myMethod(List.class, Integer.class);
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   ernest_k Petronella    7 年前

    不能将类型参数用作泛型类型。你要找的是为你的 T 类型。

    假设 T 用于以下类型:

    class GenericT<T> {}
    

    您可以这样声明您的方法:

    public <K, T extends GenericT<K>> T myMethod(Class<T> classT, Class<K> classK){
        //...
    }
    

    这使得 T 实例 GenericT 具有 K 作为类型参数。

        2
  •  2
  •   Indestruktible    7 年前

    不,那不行。为了写作 T<K> , T 必须是一个更高类型的构造函数,但是那些在Java中是不可用的。无论如何都要尝试 exist 但它们更像是纯粹的理论练习。也见 answers to this question 供进一步讨论。