<t>无法解析为类型</t>

时间:2010-09-23 10:14:30

标签: java

我想将此方法的返回类型更改为可以保存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;
}

1 个答案:

答案 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;
}