2010-09-23 81 views
0

我想将此方法的返回类型更改为一个类(ReturnContainer),该类可以保存tupelo对象以及另一个需要发回给调用方法的返回值。<T>无法解析为一个类型

我从来没有在Java中使用过这个<T>概念,所以我不知道如何重新配置​​这个方法以我需要的方式工作。

public static <T extends LocationCapable> List<T> test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    return tupelo; 
} 

当我试图改变的代码下面的清单,我得到的错误:

T cannot be resolved to a type 

我怎么能有ReturnContainer返回类型,但仍允许incomingClass是一个动态类型?

public static ReturnContainer test(Class<T> incomingClass) 
{ 
      List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
      ReturnContainer rc = new ReturnContainer(tupelo, incomingClass); 
    return rc; 
} 

回答

6

你缺少类型参数:

public static <T> ReturnContainer test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    ReturnContainer rc = new ReturnContainer(tupelo, incomingClass); 
    return rc; 
} 

我的眼睛,虽然,这看起来奇怪。 ReturnContainer也不应该有一个类型参数?在这种情况下,你会有

public static <T> ReturnContainer<T> test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    ReturnContainer rc = new ReturnContainer<T>(tupelo, incomingClass); 
    return rc; 
}