Java通用返回参数类型的通用列表

时间:2019-02-16 06:47:39

标签: java generics

我想创建以下内容:

//infer the type from parameter but restrict it to one of
// Proxy's subtype. return a list of this sub type
public static List<T> process(<T extends Proxy> proxy)
{
  return new ArrayList<T>(); //just for example
}

用法:

List<ConcreteTypeOfProxy> list = process(new ConcreteTypeOfProxy());

以上示例存在编译问题。我认为逻辑上应该在Java中可用,只是不确定语法是什么

2 个答案:

答案 0 :(得分:3)

//Any array that extends T
public static  <T extends Proxy> List<T>  process(T proxy)
{
    return new ArrayList<T>(); //just for example
}

//Returns array that has T type of parameter
public static  <T> List<T>  process(T proxy)
{
    return new ArrayList<T>(); //just for example
}

//Returns a map of generic type which you define in the method
public static <T, E extends Proxy> Map<T, E>  process(T key, E value)
{
    Map<T, E> map =  new HashMap<T, E>();
    map.put(key, value);
    return map;
}

答案 1 :(得分:0)

您不需要任何方法,因此您不需要任何参数即可:

List<ConcreteTypeOfProxy> list = new ArrayList<>();

请记住:ArrayList<ConcreteTypeOfProxy>ArrayList<AnyOtherType>之间没有区别:它只是一个ArrayList

type参数仅是指示编译器检查添加的类型的指令-仅在编译时-并自动强制转换从列表中获取的值。