也-6ren">
gpt4 book ai didi

java - 如何使用关键字 "new"且不带尖括号创建 JComboBox?

转载 作者:行者123 更新时间:2023-11-30 10:02:30 25 4
gpt4 key购买 nike

我正在尝试构建一些小型应用程序(练习我读过的东西)。我正在使用 JComboBox成分。根据 Java API JComboBox需要尖括号 ( <E> )。令人惊讶的是,使用 JComboBox没有<>也有效。我想了解它是如何工作的?

我还没有学习“通用”(它如何在后台工作,如何使用通用类),只使用了它们。

String[] season = {"Winter","Summer","Spring","Fall"};
JComboBox someComboBox = new JComboBox(season);

它在我预期会出现编译错误时工作,但通知我必须在括号内指定一个对象。

最佳答案

自 Java 7 JComboBox 是一个 generic type ,这意味着在声明这种类型的变量时,您应该通过提供一个类型参数来执行通用类型调用,该类型参数表示“此组合元素的类型盒子” [from the API] .

在您的情况下,这意味着:

JComboBox<String> someComboBox = new JComboBox<>(season);

有趣的是 Java Tutorial on JComboBox似乎没有更新到 JComboBox 的通用版本。

如果出于这个或任何其他原因,您希望在不执行泛型类型调用的情况下使用 JComboBox,这仍然是可能的,因为 Java 支持使用 raw types .

A raw type is the name of a generic class or interface without any type arguments.

因此您可以将 JComboBox 原始类型用作:

JComboBox someComboBox = new JComboBox(season);

虽然不推荐这样做,但如果您只是想试验一下或按照教程进行操作,那应该没什么大不了的。

如果您发现编译器警告令人分心,您可以通过在 IDE 中适当设置编译器错误/警告属性来摆脱它们。或者,您可以使用 @SuppressWarnings 摆脱它们注解。如果您的编译器支持,将注释实例添加到您的代码中应该可以消除警告:

@SuppressWarnings({"rawtypes","unchecked"})
JComboBox box = new JComboBox(season);

另见 this post有关 @SuppressWarnings 的更多信息。

关于java - 如何使用关键字 "new"且不带尖括号创建 JComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56920111/

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