gpt4 book ai didi

java - 获取List的类

转载 作者:行者123 更新时间:2023-11-30 03:54:41 26 4
gpt4 key购买 nike

请考虑以下 3 个 Java 类:

super 类:

public abstract class Column<T>
{

private final Class<T> type;
private final String name;


public Column(Class<T> type, String name)
{
this.type = type;
this.name = name;
}

public Class<T> getType()
{
return type;
}

// ...

}

工作子类:

public class FloatColumn extends Column<Float>
{

public FloatColumn(String name)
{
super(Float.class, name);
}

// ...

}

有问题的子类:

public class ListColumn<L extends List<T>, T> extends Column<L>
{

public ListColumn(String name)
{
super((Class<L>) List.class, name);
}

// ...

}

有问题的子类 ( ListColumn ) 在 Eclipse 中编译良好,Java 编译器合规性设置为 1.6。但是,当通过 Maven 编译时(使用 JDK 编译器,源和目标设置为 1.6),我得到 Inconvertible types错误位于 super()调用ListColumn构造函数。

编辑: Eclipse 确实会警告此行 ( Type safety: Unchecked cast from Class<List> to Class<L> )。

我知道 Eclipse 不使用 JDL 编译器,而且显然它使用的编译器不如 JDK 严格。

但是,我的问题是如何使该代码在 1.6 JDK 编译器上运行。

换句话说,我如何使用符合预期的 Class<L> 的参数来调用 super 构造函数?输入其中 L仅限于 extends List<T> .

最好我只想在 ListColumn 中进行更改构造函数,不在 Column 中类。

最佳答案

也许对你有帮助。

super((Class<L>)(Class<?>)List.class, name);

注意:它显示警告,但您可以使用@SuppressWarnings("unchecked")来抑制它

<小时/>

有关更多信息,请查看 Class object of generic class (java)

关于java - 获取List<T>的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com