我想将此方法的返回类型更改为可以保存ReturnContainer
对象的类(tupelo
)以及我需要发送回调用方法的另一个返回值。
我之前从未在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;
}
答案 0 :(得分:8)
您缺少类型参数:
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;
}